Определение того, насколько звук похож на человеческую речь


12

В поисках ответа на эту проблему я обнаружил, что эта доска объявлений решила опубликовать мой вопрос в переполнении стека.


Я ищу способ определения сходства между аудиосегментом и человеческим голосом, который выражается численно.

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

  • Одним из способов является использование программного обеспечения для распознавания речи для получения слов из аудиосегмента. Однако этот метод не может придумать, насколько «похож» звук на человеческую речь; он часто может сказать, есть ли слова в аудио, но если нет определенных слов, он не может сказать, близко ли аудио к наличию таких слов.
    Примеры: CMU Sphinx , Dragonfly , SHOUT

  • Более многообещающий метод называется распознаванием голосовой активности (VAD). Тем не менее, это имеет тенденцию иметь те же проблемы: алгоритмы / программы, использующие VAD, имеют тенденцию просто возвращать, был ли достигнут порог активности или нет значения «сходства» до или после такого порога. В качестве альтернативы, многие просто ищут объем, а не сходство с человеческой речью.
    Примеры: Speex , Listener , FreeSWITCH


Есть идеи?


1
Из вашего вопроса неясно, является ли ваша проблема A / взять аудиозапись и говорит, содержит ли она человеческую речь или нет (пример применения: обнаружение и удаление разговора ди-джея из записи радиопередачи); или B / взять речевой ввод и сказать, насколько он похож на референсный аудиосегмент. В случае, если это B, по каким критериям вы хотите измерить сходство. По контуру мелодии? (например: соответствие спетого голоса песне). На ритм и кластерные занятия? (например: соответствие битбоксинга / звукоподражания петле барабана). По тембру? (соответствие голоса к звуковому эффекту). Пожалуйста, сообщите нам ваше заявление.
pichenettes

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

1
Я работал над связанной проблемой - пытаясь определить, когда звуки храпа / дыхания были «загрязнены» речью или музыкой. К сожалению, это сложно сделать с какой-либо надежностью и не прибегая к «продвинутым» алгоритмам распознавания речи (если они вообще-то будут работать). Мое единственное наблюдение состояло бы в том, что речь имеет тенденцию иметь нерегулярный ритм, тогда как музыка (обычно) регулярна. Это и, возможно, «спектральная плоскостность» стоит проверить (я все еще оцениваю ее достоинства для своих целей).
Даниэль Р Хикс

(Более подробно: я считаю, что нормализованное стандартное отклонение спектральной плоскостности, вычисленное по БПФ звука, похоже, отражает что-то из качества звука.)
Даниэль Р Хикс

Ответы:


6

Эта проблема обычно решается с помощью методов машинного обучения.

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

Затем, используя обучающий набор аудио, который вы вручную пометили как речь / не речь, обучите классификатор (модели гауссовой смеси, SVM ...) на элементах фреймов.

Это позволит вам классифицировать немаркированные кадры в речевые / неречевые классы. Последний шаг состоит в сглаживании решений (кадр, классифицированный как неречевой, окруженный сотнями речевых кадров, скорее всего, будет ошибкой классификации), например, с использованием HMM или просто медианного фильтра.

Несколько ссылок:

Надежная классификация речи / музыки в аудиодокументах (Pinquier и др.) Различение речи / музыки для мультимедийных приложений (Эль-Малех и др.) Сравнение функций распознавания речи / музыки (Кэри и др.)

Обратите внимание, что особенности и методы классификации, которые они описывают, также имеют отношение к проблеме 1-го класса обнаружения речи (вместо того, чтобы отличать речь от чего-то еще). В этом случае вы можете использовать методы моделирования 1-го класса, такие как SVM 1-класса, или просто взять оценку вероятности из GMM, обученного речевым данным, в качестве меры «речевой».

Если, с другой стороны, ваша проблема заключается в том, что вы действительно отличаете речь от чего-то другого (скажем, музыки), вы также вполне можете использовать неконтролируемые подходы, которые направлены на выявление границ между похожим аудиоконтентом, а не на идентификацию самого контента.


Спасибо, это очень помогает! Какая польза от разбивки сигнала на маленькие окна? Поскольку вывод, который я ищу, представляет собой числовое значение, которое описывает весь аудиосегмент, было бы лучше извлечь элементы для всего сигнала, а не только для конкретных окон?
Джефф Гортмейкер

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

Чтобы быть более точным, имейте в виду, что временное измерение «свернуто», когда вы смотрите на спектр. Например, спектр мощности тона 500 Гц, сопровождаемого во времени тоном 1 кГц, аналогичен спектру мощности этих двух тонов, воспроизводимых одновременно; таким образом, спектр мощности в длинном окне сигнала, который сильно изменяется, может выглядеть не очень представительно для содержания сигнала.
pichenettes
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.