Передумови: я працюю над додатком iPhone (на який згадується в кількох інших публікаціях ), який "слухає" хропіння / дихання, коли один спить, і визначає, чи є ознаки апное сну (як попередній екран для "лабораторії сну" тестування). У програмі, в основному, використовується «спектральна різниця» для виявлення хропіння / вдиху, і вона працює досить добре (кореляція приблизно 0,85–0,90) під час тестування на записи в лабораторії сну (які насправді є досить галасливими).
Проблема: Більшість «спальних» шумів (вентилятори тощо) я можу відфільтрувати за допомогою декількох прийомів і часто надійно виявляти дихання на рівні S / N, де людське вухо не може його виявити. Проблема - голосовий шум. Незвично мати телевізор або радіо, що працюють у фоновому режимі (або просто когось розмовляти вдалині), а ритм голосу тісно відповідає диханню / хропінню. Насправді я запустив запис пізнього автора / оповідача Білла Холма через додаток, і це було, по суті, невідрізним від хропіння в ритмі, мінливості рівня та кількох інших заходів. (Хоча я можу сказати, що, мабуть, у нього не було апное сну, принаймні, не прокинувшись.)
Тож це трохи тривалий знімок (і, мабуть, розтягнення правил форуму), але я шукаю деякі ідеї, як розрізнити голос. Нам не потрібно якось фільтрувати хропіння (думав, що це було б добре), а нам просто потрібен спосіб відхилити як "занадто галасливий" звук, надмірно забруднений голосом.
Будь-які ідеї?
Опубліковані файли: я розмістив кілька файлів на dropbox.com:
Перший - це досить випадковий твір рок (я думаю), а другий - запис про покійного Білла Холма. Обидва (які я використовую як мої зразки "шуму" відрізняються від хропіння) змішуються зі шумом, щоб узагальнити сигнал. (Це ускладнює завдання їх виявлення значно складніше.) Третій файл - це десять хвилин справжнього вашого запису, де перша третина в основному дихає, середня третина - змішане дихання / хропіння, а остання третина - досить стійкий хропіння. (Ви отримуєте кашель за бонус.)
Всі три файли були перейменовані з ".wav" на "_wav.dat", оскільки багато браузерів ускладнюють завантаження файлів wav. Просто перейменуйте їх назад у ".wav" після завантаження.
Оновлення: я подумав, що ентропія «робить фокус» для мене, але виявилося, що це здебільшого особливості тестових випадків, які я використовував, плюс алгоритм, який не надто добре розроблений. В цілому ентропія для мене робить дуже мало.
Згодом я спробував методику, коли я обчислював FFT (використовуючи декілька різних віконних функцій) загальної величини сигналу (я намагався потужність, спектральний потік та кілька інших заходів), відбирав пробу приблизно 8 разів на секунду (беручи статистику з основного циклу FFT що кожні 1024/8000 секунд). Що стосується 1024 зразків, це охоплює часовий діапазон близько двох хвилин. Я сподівався, що мені вдасться побачити закономірності цього через повільний ритм хропіння / дихання проти голосу / музики (і що це також може бути кращим способом вирішити питання про " мінливість "), але поки є підказки малюнка тут і там, немає нічого, на що я дійсно можу причепитися.
( Додаткова інформація: У деяких випадках FFT величини сигналу створює дуже чіткий малюнок із сильним піком приблизно на 0,2 ГГц та сходовими гармоніками. Але ця картина майже не така виразна більшість часу, і голос та музика можуть генерувати менш чітко. версії подібного шаблону. Можливо, є якийсь спосіб обчислити значення кореляції для показника заслуги, але, здається, знадобиться прилягання кривої приблизно до поліному четвертого порядку, і робити це раз на секунду в телефоні здається недоцільним.)
Я також спробував зробити ту саму середню амплітуду FFT для 5 окремих "смуг", на які я поділив спектр. Діапазони - 4000-2000, 2000-1000, 1000-500 і 500-0. Шаблон для перших 4 діапазонів був загалом схожий на загальну схему (хоча не було справжньої "виділяється" смуги і часто зникав малий сигнал у діапазонах високої частоти), але діапазон 500-0 взагалі був просто випадковим.
Баунті: Я збираюся дати Натану щедрість, навіть якщо він не запропонував нічого нового, враховуючи, що його було найпродуктивнішою пропозицією на сьогоднішній день. У мене ще є кілька балів, які я був би готовий нагородити ще кимось, якщо б вони пережили якісь хороші ідеї.