खर्राटों से आवाज को कैसे पहचाना जाए?


22

पृष्ठभूमि: मैं एक iPhone आवेदन (उल्लेख पर काम कर रहा हूँ में कई अन्य पदों ) है कि खर्राटे ले / साँस लेने में, जबकि एक सो है और निर्धारित करता है "को सुनता है" अगर वहाँ ( "नींद प्रयोगशाला" के लिए एक पूर्व स्क्रीन के रूप में स्लीप एपनिया के लक्षण हैं परिक्षण)। आवेदन मुख्य रूप से खर्राटों / सांसों का पता लगाने के लिए "वर्णक्रमीय अंतर" को नियोजित करता है, और यह काफी अच्छी तरह से काम करता है (ca 0.85--0.90 सहसंबंध) जब नींद की लैब रिकॉर्डिंग के खिलाफ परीक्षण किया गया (जो वास्तव में काफी शोर हैं)।

समस्या: अधिकांश "बेडरूम" शोर (प्रशंसक, आदि) मैं कई तकनीकों के माध्यम से फ़िल्टर कर सकता हूं, और अक्सर एस / एन स्तरों पर सांस लेने का दृढ़ता से पता लगा सकता हूं जहां मानव कान इसका पता नहीं लगा सकते हैं। समस्या आवाज शोर है। एक टीवी या रेडियो का बैकग्राउंड में चलना असामान्य नहीं है (या बस किसी से दूरी में बात कर रहा है), और आवाज की लय बारीकी से श्वास / खर्राटों से मेल खाती है। वास्तव में, मैंने एप्लिकेशन के माध्यम से दिवंगत लेखक / कथाकार बिल होल्म की रिकॉर्डिंग चलाई और यह अनिवार्य रूप से लय, स्तर परिवर्तनशीलता और कई अन्य उपायों में खर्राटों से अप्रभेद्य था। (हालांकि मैं कह सकता हूं कि जाहिरा तौर पर वह स्लीप एपनिया नहीं था, कम से कम जागते समय नहीं।)

तो यह एक लंबा शॉट है (और शायद मंच नियमों का एक खंड), लेकिन मैं कुछ विचारों की तलाश कर रहा हूं कि कैसे आवाज को अलग किया जाए। हमें किसी भी तरह से खर्राटों को छानने की ज़रूरत नहीं है (सोचा कि यह अच्छा होगा), बल्कि हमें "बहुत शोर" ध्वनि के रूप में अस्वीकार करने का एक तरीका चाहिए जो ध्वनि के साथ अत्यधिक प्रदूषित हो।

कोई विचार?

प्रकाशित फाइलें: मैंने dropbox.com पर कुछ फाइलें रखी हैं:

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

सभी तीन फ़ाइलों को ".wav" से "_wav.dat" नाम दिया गया है, क्योंकि कई ब्राउज़र wav फ़ाइलों को डाउनलोड करने के लिए इसे कठिन बना रहे हैं। बस उन्हें डाउनलोड करने के बाद वापस "। Wav" नाम दें।

अद्यतन: मुझे लगा कि एन्ट्रॉपी मेरे लिए "ट्रिक" कर रहा था, लेकिन यह ज्यादातर मेरे द्वारा उपयोग किए जा रहे परीक्षण मामलों की ख़ासियत थी, साथ ही एक एल्गोरिथ्म जो बहुत अच्छी तरह से डिज़ाइन नहीं किया गया था। सामान्य मामले में एन्ट्रॉपी मेरे लिए बहुत कम कर रही है।

मैंने बाद में एक तकनीक की कोशिश की, जहां मैं समग्र सिग्नल परिमाण के एफएफटी (कई अलग-अलग विंडो फ़ंक्शन का उपयोग करके) की गणना करता हूं (मैंने पावर, वर्णक्रमीय प्रवाह और कई अन्य उपायों की कोशिश की) एक सेकंड में लगभग 8 बार नमूना लिया (मुख्य फ़ॉरेक्स चक्र से आंकड़े ले रहा है) जो हर 1024/8000 सेकंड पर है)। 1024 नमूनों के साथ यह लगभग दो मिनट की समय सीमा को कवर करता है। मुझे उम्मीद थी कि खर्राटों / श्वास बनाम स्वर / संगीत (और यह " परिवर्तनशीलता " मुद्दे को संबोधित करने का एक बेहतर तरीका हो सकता है) की धीमी लय के कारण मैं इसमें पैटर्न देख पाऊंगा , लेकिन जब संकेत हों यहाँ और वहाँ एक पैटर्न, वहाँ कुछ भी नहीं मैं वास्तव में पर कुंडी कर सकते हैं।

( आगे की जानकारी: कुछ मामलों के लिए, सिग्नल परिमाण का FFT लगभग 0.2Hz और स्टैरिपेप हार्मोनिक्स में एक मजबूत शिखर के साथ एक बहुत अलग पैटर्न का उत्पादन करता है। लेकिन पैटर्न लगभग इतना अलग नहीं है, और आवाज और संगीत कम भिन्न उत्पन्न कर सकते हैं। एक समान पैटर्न के संस्करण। योग्यता के आंकड़े के लिए एक सहसंबंध मूल्य की गणना करने का कोई तरीका हो सकता है, लेकिन ऐसा लगता है कि एक 4 के क्रम बहुपद के बारे में वक्र फिटिंग की आवश्यकता होगी, और ऐसा करना कि एक बार एक फोन में दूसरा अव्यवहारिक लगता है।)

मैंने भी 5 अलग-अलग "बैंड" के लिए औसत आयाम के समान एफएफटी करने का प्रयास किया है, मैंने स्पेक्ट्रम को विभाजित किया है। बैंड 4000-2000, 2000-1000, 1000-500 और 500-0 हैं। पहले 4 बैंड के लिए पैटर्न आम तौर पर समग्र पैटर्न के समान था (हालांकि कोई वास्तविक "स्टैंड-आउट" बैंड नहीं था, और अक्सर उच्च आवृत्ति बैंड में गायब होने वाला छोटा संकेत होता है), लेकिन 500-0 बैंड आमतौर पर सिर्फ यादृच्छिक था।

बाउंटी: मैं नाथन को इनाम देने जा रहा हूं, भले ही उसे कुछ भी नया नहीं दिया गया हो, यह देखते हुए कि वह अब तक का सबसे उत्पादक सुझाव था। मेरे पास अभी भी कुछ बिंदु हैं जिन्हें मैं किसी और को देने के लिए तैयार हूं, हालांकि, अगर वे कुछ अच्छे विचारों के साथ आए।


2
क्या आप कुछ प्रतिनिधि स्पेक्ट्रोग्राम पोस्ट कर सकते हैं? (डेटा पर बात करते हैं।) आप "वर्णक्रमीय अंतर" की गणना कैसे कर रहे हैं?
एमरे

"वर्णक्रमीय अंतर" को कभी-कभी "वर्णक्रमीय प्रवाह" और कुछ अन्य शब्दों के रूप में जाना जाता है। मूल रूप से यह ध्वनि के क्रमिक एफएफटी में व्यक्तिगत अंतर के वर्गों का योग है।
डैनियल आर हिक्स

2
यह सोचने के लिए आओ, ऑडियो क्लिप और भी बेहतर होगा। स्पष्टीकरण के लिए धन्यवाद।
एमरे

मैं यह पता लगाने की कोशिश कर रहा हूं कि सबसे अच्छी प्रस्तुति क्या होगी। मेरे पास छोटे नमूनों के लिए स्पेक्ट्रा (मेरे वास्तविक एफएफटी के अलावा) करने के लिए फैंसी सॉफ्टवेयर नहीं है - एक व्यक्तिगत ध्वनि के स्पेक्ट्रम पर कब्जा करने के लिए ऑडेसिटी के लिए एक नमूने के बहुत लंबे समय की आवश्यकता होती है। और वास्तविक रोगी ध्वनियों को पोस्ट करने के साथ कुछ चिकित्सा गोपनीयता मुद्दे हैं।
डैनियल आर हिक्स

1
@DanielRHicks स्पेक्ट्रोग्राम टीवी के साथ + खर्राटे और बस खर्राटे या somethings कि वास्तव में एक लंबा रास्ता तय करना होगा।
स्पेसी

जवाबों:


10

पृष्ठभूमि

नीचे दिए गए कागजात के अनुसार, खर्राटों की विशेषता लगभग 130Hz है, और यह पूरी तरह से 12kHz से नीचे केंद्रित है:

आइए देखें कि क्या हम इसका लाभ उठा सकते हैं।

MATLAB उदाहरण

हमारे पास एक बच्चे की खर्राटों की खराब रिकॉर्डिंग है ; 10-मिनट, 8-बिट मोनो WAV फ़ाइल। सैंपलिंग रेट 8KHz है, जिसका मतलब है कि ऑडियो सिग्नल की बैंडविड्थ 4KHz है। स्तर बहुत कम है इसलिए मैं इसे पहले समझूंगा

[snd,fs]=wavread('recordedFile20120408010300_first_ten_minutes');
cmp=compand(snd,255,1);
wavwrite(cmp,'companded'); % used for listening purposes
[s,f,t,p]=spectrogram(snd,hann(8192));
surf(linspace(0,600,length(t)),f/pi,10*log10(p),'edgecolor','none'); 
axis tight; view(0,90);

फुल स्पेक्ट्रोग्राम

बैंडविड्थ के लिए y अक्ष को सामान्यीकृत किया जाता है, 4KHz, ताकि आप 0.1 पर देखें notch 400Hz की आवृत्ति से मेल खाती है। ~ 186s पर एक खांसी के लिए एक स्पाइक है; उस पर ध्यान न दें। हम प्रत्येक खर्राटे के दौरान अस्पष्ट रूप से देख सकते हैं। केवल इतना ही नहीं, बल्कि वे 0.2 x 4KHz = 800Hz से कम केंद्रित हैं। आओ हम इसे नज़दीक से देखें।

idx_max_freq=round(0.2*length(f));
surf(linspace(0,600,length(t)),fs*f(1:,idx_max_freq:)/(2*pi),10*log10(p(1:idx_max_freq,:)),'edgecolor','none');
axis tight; view(0,90);

स्पेक्ट्रोग्राम का 0-800Hz ज़ूम।

इस बार आवृत्ति अक्ष को हर्ट्ज में लेबल किया गया था। अब यह शब्द स्पष्ट हैं। हम 60Hz (180Hz, 300Hz, 420Hz) पर शुरू होने वाली बिजली लाइन के शोर के ओवरटोन को भी देख सकते हैं। अब एल्गोरिथ्म का सार आता है: आइए इस सबबैंड में ऊर्जा के आधार पर सिग्नल को वर्गीकृत करें, जिसमें लाइन का शोर हटा दिया जाए।

freq_list=round([1:57 63:177 183:297 303:417 423:800]*idx_max_freq/800);
y=10*log10(sum(p(freq_list,:)));
plot(linspace(0,600,length(y)),y-median(y))
stem(linspace(0,600,length(y)),y-median(y)>.5*std(y))

यदि हम फैंसी प्राप्त करना चाहते हैं, तो हम ओवरसाइज्ड स्पाइक्स को छोड़ सकते हैं:

stem(linspace(0,600,length(y)),(y-median(y)>.5*std(y)).*(y-median(y)<5*std(y)))

नोकदार सबबैंड 0-800Hz में ऊर्जा का प्लॉट

अंतिम परिणाम

कम एसएनआर, पहले भूखंड में संकेत को समझदारी से कठिनाई में प्रकट करता है, इसका मतलब है कि हमारे पास केवल आधा मानक विचलन है (जिसका मूल्य 4.1 था)। तने के निशान को चिह्नित करते हैं।


हाँ, मेरे वर्तमान एल्गोरिथ्म एफएफटी बाल्टियों को शून्य या कम निरंतर स्तर पर शून्य करके हार्मोनिक और अन्य हार्मोनिक शोर (वेंटिलेटर शोर लगभग 110 हर्ट्ज) हो जाता है। जब आप कहते हैं कि मैं स्पष्ट नहीं हूँ, तो आप कहते हैं "चलो इस सबबैंड में ऊर्जा के आधार पर सिग्नल को वर्गीकृत करें" - आप किस सबबैंड का उल्लेख कर रहे हैं?
डेनियल आर हिक्स

ओह, मैं देख रहा हूं, आप 800 हर्ट्ज से नीचे के बारे में बात कर रहे हैं - मैंने उस बिट को याद किया।
डेनियल आर हिक्स

यदि आप अपने ऊपरी चार्ट को देखते हैं, तो आप देखेंगे कि शीर्ष के पास काफी जानकारी है, और बीच के ठीक नीचे एक और बैंड है। और इन बैंडों में प्रतिस्पर्धा कम शोर है। मेरी वर्तमान योजना स्पेक्ट्रम को स्लाइस करती है और प्रत्येक स्लाइस के एसएनआर का मूल्यांकन करने का प्रयास करती है, फिर उसी के अनुसार वजन करती है।
डेनियल आर हिक्स

आप कई सुविधाओं को सम्‍मिलित कर सकते हैं, जैसे कि चुनिंदा सबबैंड्स में ऊर्जा, वर्णक्रमीय समतलता, और इसी तरह एक अस्थायी सुविधा सदिश बनाने के लिए। फिर पीसीए को यह पता लगाने के लिए प्रदर्शन करें कि कौन सा सबसे ज्यादा मायने रखता है, जैसा कि अंतिम पेपर में बताया गया है।
Emre

यह मूल रूप से मैं जो कर रहा हूं, पीसीए की कठोरता को अनुपस्थित करता है।
डेनियल आर हिक्स

9

बस इसे सभी संभावनाओं को कवर करने के लिए यहां फेंकने पर, आप एन्ट्रॉपी का उपयोग करने में सक्षम हो सकते हैं, मुझे नहीं पता कि खर्राटों बनाम भाषण के एन्ट्रापी स्तर क्या है, लेकिन अगर यह पर्याप्त रूप से अलग है जो काम कर सकता है। http://www.ee.columbia.edu/~dpwe/papers/ShenHL98-endpoint.pdf


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

आपको सावधान रहने की एक बात यह है कि आपको एक साधारण स्तर के गेट को भी शामिल करने की आवश्यकता है, आपके पास बेहद निम्न स्तर का शोर हो सकता है, जो आपके द्वारा जाने देने की कोशिश कर रहे सामान से मेल खा सकता है, यह भी मेरा अनुभव डिजिट मात्रा निर्धारण का सुझाव देता है अत्यधिक निम्न स्तर का शोर सिग्नल में आदेश के बारे में बढ़ा सकता है, क्योंकि निम्न स्तर पर संभावित नमूना मूल्यों की संख्या कम होती है और अकेले एन्ट्रापी आयाम में अंतर पर विचार नहीं करता है।
नाथन डे

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

काश, मुझे पता चला कि मैं अपने क्रॉप एन्ट्रापी गणना के साथ जो माप रहा था, वह गणना की एक कलाकृति थी (परीक्षण डेटा में शून्य के कारण)। यह मेरी जरूरत के लिए काम करता है, लेकिन जैसा कि मैंने पहले सोचा था उतना अच्छा नहीं है।
डैनियल आर हिक्स

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

3

समय डोमेन आँकड़े शायद? खर्राटे अपेक्षाकृत लंबे समय तक स्थिर अवस्था में लगते हैं जबकि भाषण ऊर्जा थोड़े समय की अवधि में काफी बदल जाती है। इसे वर्णक्रमीय विश्लेषण के साथ भी जोड़ा जा सकता है। स्वरों में आवृत्ति कम होती है और व्यंजन अधिक उच्च आवृत्ति वाले होते हैं। भाषण के दौरान स्पेक्ट्रम जल्दी से उन राज्यों के बीच आगे और पीछे उछाल सकता है, जबकि भंडारण एक राज्य में अधिक समय तक रह सकता है।


मूल समय-डोमेन आँकड़े अप्रभेद्य हैं। हालांकि, यह एक अच्छी बात है कि मैं अल्पकालिक परिवर्तनशीलता को देख सकता हूं (जिसे मैं सामान्य रूप से सुचारू करता हूं)। आवृत्ति बैंड के बीच "उछल" की तलाश भी एक अच्छा विचार है ... मैं वर्तमान में 5 बैंड में विभाजित करता हूं और स्पष्ट कम एस / एन के साथ बैंड को अस्वीकार करता हूं।
डैनियल आर हिक्स

@DanielRHicks मैंने देखा कि कैसे cepstral लिफाफे की गणना कहीं और की जाती है, लेकिन शायद आप इसका उपयोग शुद्ध स्पेक्ट्रम के बजाय अपनी वर्णक्रमीय परिवर्तनशीलता के एक उपाय के रूप में कर सकते हैं जो अधिक 'शोर / दांतेदार' होगा, जबकि cepstrum (s) मेरे लिए अधिक चिकनी हैं । मैंने यह भी सुना है कि मेल-फ़्रिक्वेंसी सेप्सट्रम का उपयोग आवाज़ के रिकॉग में किया जाता है, और यह ऐसा लगता है जैसे यह मुझे आपके उपयोग के लिए हो सकता है।
स्पेसी

@DanielRHicks: किस विधि से अप्रभेद्य? वे निश्चित रूप से मेरे लिए अलग हैं।
एंडोलिथ

@endolith - Indistinguishable ने मेरे वर्तमान मेट्रिक्स - "वर्णक्रमीय अंतर" को समग्र ऊर्जा स्तर दिया। लेकिन वे लगभग 0.5 सेकंड के स्थिरांक के साथ कम-पास फ़िल्टर किए जाते हैं। मुझे लगता है कि मैं अनफ़िल्टर्ड डेटा को थोड़ा देखने की कोशिश करूंगा।
डैनियल आर हिक्स

मेरे पास छोटी अवधि के समय के आँकड़े कैप्चर करने का एक समय था। कुछ "संकेत", लेकिन कुछ भी निश्चित नहीं।
डेनियल आर हिक्स

1

समय के साथ वर्णक्रमीय जटिलता। मैं इस बात की परिकल्पना करूंगा कि मानव भाषण शायद अधिक सूक्तियों का उपयोग करता है, और खर्राटों के फोनम दृश्यों की तुलना में उनकी अनुक्रमण में बहुत अधिक सांख्यिकीय जटिलता के साथ।

यह निरंतर भाषण मान्यता की तुलना में एक बहुत आसान समस्या है, क्योंकि आपको वास्तव में किसी विशेष ध्वनि या वाक्य को सही ढंग से पहचानने की आवश्यकता नहीं होगी, केवल ध्वनि ध्वन्यात्मक वर्णक्रमीय खंडों की संख्या, और उनके अनुक्रमों के कुछ सांख्यिकीय जटिलता उपाय (एन्ट्रॉपी या कम्प्रेसिबिलिटी टेस्ट काम कर सकता है)। फिर देखें कि क्या आप इन उपायों के लिए एक विश्वसनीय सीमा निर्धारित कर सकते हैं।


समस्या यह है कि खर्राटे आश्चर्यजनक रूप से जटिल / यादृच्छिक होते हैं, और इसके स्पेक्ट्रम की जांच करने पर अलग-अलग विशेषताओं के रास्ते में बहुत कमी होती है।
डेनियल आर हिक्स

यह एक दिलचस्प जानकारी होगी यदि एक नींद वाले व्यक्ति ने कई अलग-अलग स्वर फोरन फिल्टर और प्लोसिव्स (और समय के साथ एक घनत्व पर इस तरह के डिग्राफ और ट्रिग्राफ), और पिच इन्फ्लेक्शंस (आदि) का गठन किया, जबकि सोते समय और जागते हुए बात करते हुए।
hotpaw2

सुविधाओं की कमी एक महत्वपूर्ण विशेषता हो सकती है। भाषण में विशेषताएं हैं।
Hotpaw2

एक समस्या यह है कि खर्राटे एक दम से दूसरी सांस तक काफी भिन्न हो सकते हैं। एक साधारण भारी साँस बहुत "सफेद" है, लेकिन एक खर्राटे में कुछ बहुत मजबूत स्पाइक्स हो सकते हैं। यह अनिवार्य रूप से एक चौकोर लहर है, हालांकि यह एक अति-सरलीकरण है। और हमें स्मार्ट फोन पर वास्तविक समय में विश्लेषण करने की आवश्यकता है, इसलिए एल्गोरिथ्म की जटिलता सीमित है।
डैनियल आर हिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.