TinyML: नन्हीं चिप्स पर AIमध्यमपाठ 2795 मिनट का पाठ

वेक वर्ड्स और जेस्चर्स

एक always-on डिटेक्टर पूरे दिन बार-बार जाँच करता रहता है। जानिए झूठे अलार्म (false alarms) और चूक जाने (misses) के बीच का संतुलन, और थ्रेशोल्ड कैसे चुनें।

पाठ वीडियो में

60 सेकंड में

वेक वर्ड्स और जेस्चर्स

एक always-on डिटेक्टर पूरे दिन बार-बार जाँच करता रहता है। जानिए झूठे अलार्म (false alarms) और चूक जाने (misses) के बीच का संतुलन, और थ्रेशोल्ड कैसे चुनें।

1/5
आसान शब्दों में
हर आवाज़ पर भौंकने वाला कुत्ता पूरे घर को जगाए रखता है। जो कभी नहीं भौंकता, वह असली चोर को छोड़ देता है। एक अच्छा पहरेदार कुत्ता इन दोनों के बीच होता है। Always-on डिटेक्टर की भी यही समस्या है: आप चुनते हैं कि वह कितनी "आसानी से" भौंकता है।
एक wake word डिटेक्टर हमेशा किसी एक शब्द या वाक्यांश के लिए सुनता रहता है। जब यह उसे सुनता है, तो यह एक बड़े सिस्टम को जगा देता है। जेस्चर डिटेक्टर भी हलचल के साथ यही करते हैं: कलाई का झटका, डबल टैप। इसे always-on detection कहते हैं, और यह TinyML के सबसे आम कामों में से एक है, क्योंकि बाकी सब कुछ सोते रहने के दौरान यह छोटा मॉडल बहुत कम खर्च में चल सकता है।

Always-on डिटेक्शन कैसे काम करता है

  1. 1

    एक रोलिंग बफ़र बनाए रखें

    ऑडियो या मोशन के पिछले लगभग एक सेकंड के हिस्से को RAM में स्टोर करें।
  2. 2

    लगातार जाँचें

    हर सेकंड कई बार, सबसे ताज़ा विंडो को फ़ीचर्स में बदलें और मॉडल चलाएं।
  3. 3

    स्कोर प्राप्त करें

    मॉडल 0 और 1 के बीच एक स्कोर देता है: वेक वर्ड होने की संभावना कितनी है।
  4. 4

    थ्रेशोल्ड से तुलना करें

    अगर स्कोर थ्रेशोल्ड पर या उससे ऊपर है, तो यह ट्रिगर होता है।
  5. 5

    स्मूथ करें और इंतज़ार करें

    अक्सर लगातार कई बार हाई स्कोर आने की ज़रूरत होती है, फिर थोड़ी देर के लिए नए ट्रिगर्स को अनदेखा किया जाता है।

दो तरह की गलतियाँ

गलतीक्या होता हैकैसा महसूस होता है
झूठा अलार्म (फॉल्स पॉजिटिव)यह तब ट्रिगर होता है जब किसी ने वह शब्द नहीं कहाडिवाइस टीवी या प्रेशर कुकर की सीटी पर जाग जाती है। परेशान करने वाला, बैटरी खर्च करता है, और जासूसी जैसा लग सकता है।
चूक जाना (फॉल्स नेगेटिव)किसी ने वह शब्द कहा और यह ट्रिगर नहीं हुआयूज़र बात दोहराता है, खीझ जाता है, और छोड़ देता है।
थ्रेशोल्ड संतुलन को बदलता है। कम थ्रेशोल्ड आसानी से ट्रिगर होता है: कम चूक, ज़्यादा झूठे अलार्म। ज़्यादा थ्रेशोल्ड कभी-कभार ट्रिगर होता है: कम झूठे अलार्म, ज़्यादा चूक। आप दोनों को शून्य नहीं बना सकते; आपको तय करना होगा कि आप कहाँ बैठना चाहते हैं।

झूठे अलार्म की दर बहुत कम क्यों होनी चाहिए

एक always-on डिटेक्टर पूरे दिन, हर सेकंड कई बार फैसला लेता है। इसलिए बहुत छोटी लगने वाली दर भी जुड़कर बड़ी बन जाती है।
Python: how a small false-alarm rate adds up over a daypython
# A detector that checks for the wake word twice every second, all day.
checks_per_day = 2 * 60 * 60 * 24
for false_alarm_rate in [0.01, 0.001, 0.0001, 0.00001]:
    wakes = checks_per_day * false_alarm_rate
    print(f"false alarm on {false_alarm_rate:.3%} of checks -> about {wakes:,.1f} false wakes a day")
इसलिए टीमें अक्सर बैकग्राउंड आवाज़ के प्रति घंटे या प्रति दिन झूठे अलार्म की बात करती हैं, और चूक को असली वेक वर्ड्स के हिस्से के रूप में मापती हैं। वेक वर्ड के बिना सामान्य जीवन की लंबी रिकॉर्डिंग्स पर झूठे अलार्म मापें: बातचीत, टीवी, रसोई का शोर, ट्रैफ़िक।
कमज़ोर टेस्टिंग
  • सिर्फ़ शांत कमरे में साफ़ रिकॉर्डिंग्स पर टेस्ट करना
  • सिर्फ़ एक एक्यूरेसी नंबर रिपोर्ट करना
  • ट्रेनिंग डेटा पर जो सबसे अच्छा दिखे, वही थ्रेशोल्ड चुन लेना
  • सिर्फ़ डेवलपर की आवाज़ से टेस्ट करना
मज़बूत टेस्टिंग
  • घंटों का असली बैकग्राउंड: टीवी, परिवार की बातचीत, ट्रैफ़िक, त्योहार
  • प्रति घंटे झूठे अलार्म और मिस रेट को अलग-अलग रिपोर्ट करना
  • झूठे अलार्म के तय लक्ष्य के लिए, अलग रखे गए (held-out) डेटा पर थ्रेशोल्ड चुनना
  • कई आवाज़ें, उम्र, लहज़े और भाषाएं, डिवाइस के पास और दूर से
असली उदाहरण
एक टीम दुकान की शटर लाइट के लिए वॉयस स्विच बनाती है। टेस्टिंग में यह अच्छा काम करता है। दुकान में, एक हिंदी फ़िल्मी गाना जिसमें मिलता-जुलता शब्द है, हर शाम इसे कई बार चालू कर देता है। वे गानों और टीवी की रिकॉर्डिंग्स को बैकग्राउंड क्लास में जोड़ते हैं, और थ्रेशोल्ड थोड़ा बढ़ा देते हैं। चूक थोड़ी बढ़ जाती हैं, लेकिन झूठे अलार्म बहुत कम हो जाते हैं।
नोट
जेस्चर्स में भी यही समझौता होता है। "मदद के लिए हिलाएं" वाला जेस्चर किसी के दौड़ते समय ट्रिगर नहीं होना चाहिए, लेकिन सच में हिलाने पर चूकना भी नहीं चाहिए। इस आधार पर थ्रेशोल्ड चुनें कि आपके यूज़र्स के लिए कौन सी गलती ज़्यादा बुरी है, और रोज़मर्रा की असली हलचलों के साथ टेस्ट करें।
सावधान रहें
सुरक्षा से जुड़े कामों के लिए, जैसे गिरने का पता लगाना (fall detection) या अलार्म, सिर्फ़ TinyML डिटेक्टर पर निर्भर न रहें। झूठे अलार्म रद्द करने का एक तरीका और हाथ से मदद बुलाने का एक तरीका जोड़ें, और उन लोगों के साथ टेस्ट करें जो वास्तव में इसका इस्तेमाल करेंगे।

और देखें और पढ़ें

लैब

काम करने वाले फ़ंक्शन्स जो फ़ॉल्स-अलार्म और मिस रेट्स की गणना करते हैं, और फ़ॉल्स-अलार्म के लक्ष्य के लिए एक थ्रेशोल्ड चुनते हैं।

~20 min

समस्या

स्टार्टर डिटेक्टर के कुछ काल्पनिक स्कोर बनाता है: 200 क्लिप्स जहाँ किसी ने वेक वर्ड बोला, और 5000 क्लिप्स दूसरी आवाज़ों की।

  1. rates(threshold) लिखें। जब स्कोर ≥ थ्रेशोल्ड हो, तो डिटेक्टर ट्रिगर होता है। (false_alarm_rate, miss_rate) रिटर्न करें: अन्य क्लिप्स का वह हिस्सा जो ट्रिगर होता है, और वर्ड क्लिप्स का वह हिस्सा जो ट्रिगर नहीं होता।
  2. pick_threshold(max_false_alarm) लिखें: दिए गए थ्रेशोल्ड विकल्पों में से सबसे कम थ्रेशोल्ड रिटर्न करें जिसका फ़ॉल्स-अलार्म रेट अधिकतम सीमा के अंदर हो। (सबसे कम इसलिए, क्योंकि यह असली शब्दों को सबसे कम छोड़ता है।)
  3. इसे चलाएं। 1% फ़ॉल्स-अलार्म लिमिट से 0.1% तक जाने के लिए आपको कितनी चूक झेलनी पड़ती हैं?
  4. दो वाक्य लिखें: रसोई के वॉयस स्विच के लिए कौन सी गलती ज़्यादा बुरी है, और "मदद के लिए बुलाएं" जेस्चर के लिए कौन सी ज़्यादा बुरी है?

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q11% फ़ॉल्स-अलार्म लिमिट के साथ आप बहुत कम वेक वर्ड्स छोड़ते हैं। फिर भी यह एक खराब प्रोडक्ट क्यों हो सकता है?दिखाएं

Always-on डिवाइस के लिए 1% जाँचें बहुत ज़्यादा होती हैं। अगर यह हर सेकंड दो बार जाँचता है, तो यह दिन में एक हज़ार से भी ज़्यादा बार बेवजह जाग जाएगा। यह सीमा असली बैकग्राउंड आवाज़ के प्रति घंटे या प्रति दिन के हिसाब से तय की जानी चाहिए, जिसका मतलब है कि प्रति जाँच की दर बहुत छोटी होनी चाहिए।

Q2आपके डिटेक्टर के झूठे अलार्म घर पर तो ठीक हैं, लेकिन शादी में बहुत ज़्यादा हो जाते हैं। आप क्या करेंगे?दिखाएं

संगीत, भीड़ और भाषणों वाले तेज़ आवाज़ वाले कार्यक्रमों से रिकॉर्डिंग्स इकट्ठा करें, और उन्हें बैकग्राउंड ट्रेनिंग डेटा और फ़ॉल्स-अलार्म टेस्ट में जोड़ें। फिर से ट्रेन करें और दोबारा थ्रेशोल्ड चुनें। आप लगातार कई हाई स्कोर्स की आवश्यकता भी लागू कर सकते हैं। इसके बाद मिस रेट की दोबारा जाँच करें, क्योंकि वह बढ़ सकता है।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

मॉडल को ही इतना बेहतर क्यों न बना दिया जाए कि थ्रेशोल्ड की ज़रूरत ही न पड़े?

एक बेहतर मॉडल से मदद मिलती है: उसके स्कोर्स दोनों ग्रुप्स को ज़्यादा साफ़ तौर पर अलग करते हैं, जिससे किसी भी थ्रेशोल्ड पर कम गलतियाँ होती हैं। लेकिन असली शब्दों और बैकग्राउंड के स्कोर्स में फिर भी थोड़ा ओवरलैप रहेगा, इसलिए आपको हमेशा एक थ्रेशोल्ड चुनना ही होगा।

"लगातार कई हाई स्कोर्स की ज़रूरत" होने से क्या होता है?

थ्रेशोल्ड से ऊपर आने वाला एक अकेला शोर भरा स्पाइक अब ट्रिगर नहीं कर पाता। असली शब्द आमतौर पर लगातार कई जाँचों में हाई स्कोर देते हैं। इससे झूठे अलार्म कम होते हैं, बस थोड़ी सी देरी होती है और कभी-कभी कुछ ज़्यादा चूक हो सकती हैं।

क्या हर डिवाइस को एक ही थ्रेशोल्ड इस्तेमाल करना चाहिए?

अक्सर एक डिफ़ॉल्ट चुना जाता है, लेकिन कुछ प्रोडक्ट्स इसे सेटिंग या माहौल के हिसाब से एडजस्ट करते हैं। एक शोर-शराबे वाली रसोई और एक शांत बेडरूम अलग-अलग होते हैं। जिस सबसे शोर-शराबे वाली जगह की आप उम्मीद करते हैं, वहाँ डिफ़ॉल्ट की जाँच करें।

क्या मैं कोई भी वेक वर्ड चुन सकता हूँ?

छोटे या आम शब्द गलती से आसानी से ट्रिगर हो जाते हैं। कुछ साफ़ अक्षरों वाले ऐसे शब्द जो सामान्य बातचीत में नहीं आते, आमतौर पर बेहतर काम करते हैं। अपने चुने गए शब्द को उन भाषाओं में असली बातचीत के साथ टेस्ट करें जो आपके यूज़र्स बोलते हैं।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें