Визначення того, наскільки звук схожий на мовлення людини


12

Шукаючи відповіді на цю проблему, я знайшов цю дошку, тому вирішив перехрестити це моє питання із Stack Overflow.


Я шукаю метод визначення схожості між звуковим сегментом і людським голосом, який виражається чисельно.

Я шукав зовсім небагато, але те, що я знайшов поки що (докладно нижче), не дуже відповідає тому, що мені потрібно:

  • Одним із методів є використання програмного забезпечення для розпізнавання мовлення для отримання слів із аудіо сегменту. Однак цей метод не може придумати, наскільки звук "схожий" на людську мову; він часто може сказати, чи є в аудіо слова, чи ні, але якщо немає певних слів, він не може сказати, чи закрити звук - це мати такі слова.
    Приклади: Сфінкс CMU , Dragonfly , SHOUT

  • Більш перспективний метод називається виявленням голосової активності (VAD). Однак це, як правило, має ті самі проблеми: алгоритми / програми, що використовують VAD, як правило, повертають, досягнуто чи ні поріг активності, і не має значення "подібності" до або після такого порогу. Крім того, багато хто просто шукають гучності, а не подібності до людської мови.
    Приклади: Speex , слухач , FreeSWITCH


Будь-які ідеї?


1
З вашого запитання незрозуміло, чи проблема у вас є A / взяти аудіозапис і каже, чи містить він людську промову чи ні (приклад програми: виявляйте та видаляйте розмови DJ із запису радіошоу); або B / візьміть мовне введення і скажіть, наскільки це схоже на сегмент опорного аудіо Якщо це B, за якими критеріями ви хочете виміряти схожість. По контуру мелодії? (наприклад: відповідність співаного голосу пісні). На уроках ритміки та кластерів? (наприклад: відповідність бітбоксінгу / ономатопеї до барабанного циклу). На тембрі? (відповідність голосу та звукового ефекту). Скажіть, будь ласка, свою заявку.
пікенети

Вибачте, моя проблема полягає в тому, що ви детально описали в А. Я хочу визначити, чи звуковий сегмент - це мова людини.
Джефф Гортмейкер

1
Я працював над пов’язаною проблемою - намагаюся визначити, коли звуки хропіння / дихання були "забруднені" мовою чи музикою. З будь-якою надійністю важко обійтися без будь-якої надійності і не вдаватися до «просунутих» алгоритмів розпізнавання мовлення (якби вони, власне, навіть спрацювали). Моє одне зауваження: мовлення має неправильний ритм, тоді як музика (як правило) регулярна. Це і, можливо, "спектральна площинність" варто перевірити (я все ще оцінюю його достоїнства для моїх цілей).
Даніель Р Хікс

(Докладніше про волосся: я вважаю, що нормалізоване стандартне відхилення спектральної плоскості, обчислене з FFT аудіо, здається, відображає щось із звуковим якістю.)
Даніель Р Хікс

Відповіді:


6

Таку проблему зазвичай вирішують за допомогою методик машинного навчання.

Розбийте сигнал на послідовність кадрів 20мс або 50мс. Витягніть функції на кожному кадрі. MFCC, як правило, хороший для такого типу додатків, хоча є особливості, більш характерні для виявлення голосу (енергія модуляції 4 Гц - це приблизно швидкість, з якою говорять люди; швидкість нульового перетину).

Потім, використовуючи навчальний набір аудіо, який ви позначили вручну як мовлення / не мовлення, підготуйте класифікатор (моделі Гауссової суміші, SVM ...) за функціями кадрів.

Це дозволить вам класифікувати без маркування кадри на мовні / не мовленнєві класи. Останній крок полягає у вирівнюванні рішень (кадр, віднесений до немовного мовлення, оточений сотнями мовленнєвих кадрів, ймовірно, є помилкою класифікації), наприклад, використовуючи НММ або просто середній фільтр.

Кілька посилань:

Надійна класифікація мови / музики в аудіодокументах (Pinquier & al) Дискримінація мови / музики для мультимедійних програм (El-Maleh & al) Порівняння особливостей дискримінації мови / музики (Carey & al)

Зауважте, що описані ними характеристики та методи класифікації також є актуальними для проблеми 1 класу виявлення мови (замість того, щоб розрізняти мовлення проти чогось іншого). У цьому випадку ви можете використовувати методи 1-класового моделювання, такі як SVM для 1 класу, або просто взяти оцінку ймовірності з GMM, підготовленого за мовленнєвими даними, як міру "мовленнєвості".

Якщо, з іншого боку, ваша проблема - це справді дискримінація мови в порівнянні з чимось іншим (скажімо, музикою), ви також можете дуже добре використовувати підходи без нагляду , орієнтовані на виявлення меж між аналогічним звуковим контентом - а не на виявлення цього вмісту.


Дякую, це допомагає тоні! Яка вигода від розбиття сигналу на невеликі вікна? Оскільки вихід, який я шукаю, є числовим значенням, яке описує весь аудіо сегмент, чи було б краще витягнути функції для всього сигналу, а не лише конкретних вікон?
Джефф Гортмейкер

Обчислення особливостей (особливо спектральних або цепстральних) для дуже довгих вікон дозволило б впорядкувати або скасувати деякі властивості, завдяки яким мова виділяється. Ви можете перевірити це самостійно, змішавши разом багато коротких фрагментів мови - важко буде визнати результат мовним. Таким чином, краще проводити класифікацію на невеликих сегментах; і, у вашому випадку, агрегуйте бали (наприклад, обчисліть середній бал ймовірності, що дається GMM; або обчисліть% кадрів, класифікованих як мова за допомогою двійкового класифікатора).
пікенети

Якщо точніше, майте на увазі, що часовий вимір "згортається", коли ви дивитесь на спектр. Наприклад, спектр потужності тону 500 Гц, що слідує за часом тоном 1 кГц, аналогічний спектру потужності цих двох тонів, що відтворюються одночасно; тому спектр потужності сигналу, який сильно змінюється, через довге вікно може не виглядати дуже репрезентативно за змістом сигналу.
пікенети
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.