Открытый исходный код для распознавания голоса и распознавания - PullRequest
24 голосов
/ 22 апреля 2011

У меня есть 15 аудиокассет, одна из которых, я считаю, содержит старую запись разговора моей бабушки и меня.Быстрая попытка найти правильное место не обернулась.Я не хочу слушать 20 часов ленты, чтобы найти это.Местоположение не может быть в начале одной из лент.Кажется, что большая часть контента подразделяется на три категории - по общей длине, сначала самой длинной: тишина, речевое радио и музыка.

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

  1. Не тихие области
  2. Области, содержащие человеческую речь
  3. Области, содержащие мою собственную речь (и речь моей бабушки)

Я предпочитаю Python, Java или C.

Если ответы не найдутся, советы по поисковым запросам будут полезны, поскольку я ничего не знаю о поле.

Я понимаю, что могу легко потратить на это более 20 часов.

Ответы [ 8 ]

14 голосов
/ 09 июня 2013

То, что вы, вероятно, экономите большую часть времени, - это диаризация динамика.Это работает путем аннотирования записи с помощью идентификаторов ораторов, которые можно затем вручную сопоставить с реальными людьми без особых усилий.Частота ошибок обычно составляет около 10-15% от длины записи, что звучит ужасно, но это включает в себя обнаружение слишком большого количества говорящих и сопоставление двух идентификаторов одному человеку, что не так сложно исправить.

Oneтаким хорошим инструментом является SHoUT toolkit (C ++), хотя он немного требователен к формату ввода.Смотрите использование для этого инструмента от автора .Он выводит обнаружение голосовой / речевой активности метаданные И диаризация динамика , что означает, что вы получаете 1-ю и 2-ю точку (VAD / SAD) и немного больше, так как он аннотирует, когда активен один и тот же динамикв записи.

Другим полезным инструментом является LIUM spkdiarization (Java), который в основном делает то же самое, за исключением того, что я еще не приложил достаточно усилий, чтобы понять, как получить метаданные VAD,Он имеет приятный готовый к использованию загружаемый пакет .

С небольшой компиляцией это должно сработать менее чем за час.

5 голосов
/ 22 апреля 2015

Вы также можете попробовать pyAudioAnalysis до:

  1. Удаление тишины:

from pyAudioAnalysis import audioBasicIO as aIO from pyAudioAnalysis import audioSegmentation as aS [Fs, x] = aIO.readAudioFile("data/recording1.wav") segments = aS.silenceRemoval(x, Fs, 0.020, 0.020, smoothWindow = 1.0, Weight = 0.3, plot = True)

segments содержит конечные точки сегментов безмолвия.

  1. Классификация: Различение речи и музыки: pyAudioAnalysis также включает в себя предварительно обученные классификаторы, которые можно использовать для классификации неизвестных сегментов либо по речи, либо по музыке.
5 голосов
/ 22 апреля 2011

Лучшим вариантом будет найти модуль с открытым исходным кодом, который распознает голос или распознает говорящего (но не распознает речь).Идентификация говорящего используется для идентификации конкретного говорящего, тогда как распознавание речи преобразует разговорный звук в текст.Могут быть пакеты идентификации ораторов с открытым исходным кодом, вы можете попробовать найти что-то вроде SourceForge.net для «идентификации оратора» или «голоса И биометрии».Так как я сам не использовал его, я ничего не могу порекомендовать.

Если вы не можете найти что-либо, но заинтересованы в том, чтобы прокатить одну из своих, то есть множество библиотек FFT с открытым исходным кодом для любой популярнойязык.Техника будет такой:

  • Получите типичную запись о том, что вы разговариваете нормально и ваша бабушка разговаривает нормально в цифровой форме, с минимальным фоновым шумом, насколько это возможно
    • Берите БПФ каждогосекунды звука или около того в целевых записях
    • Из созданного вами массива профилей БПФ отфильтруйте любой из них ниже определенного среднего порогового значения энергии, поскольку они, скорее всего, являются помехами
    • Создание основного БПФпрофиль путем усреднения неотфильтрованных снимков FFT
    • Затем повторите вышеупомянутую технику дискретизации FFT для оцифрованного целевого аудио (20 часов материала)
    • Отметьте все области в целевых аудиофайлах, гдеснимок БПФ в любой момент времени аналогичен вашему основному профилю БПФ для вас и вашей бабушки.Вам нужно будет поиграть с настройкой сходства, чтобы не получить слишком много ложных срабатываний.Также обратите внимание, что вам, возможно, придется ограничить сравнение частотных интервалов FFT только теми частотными интервалами в вашем главном профиле FFT, которые имеют энергию.В противном случае, если целевой аудиосигнал вас и вашей бабушки говорит о значительном фоновом шуме, он отключит вашу функцию подобия.
    • Выведите список индексов времени для ручной проверки

Обратите внимание, что количество часов для завершения этого проекта может легко превысить 20 часов прослушивания записей вручную.Но это будет намного веселее, чем перелистывать 20 часов аудио, и вы сможете использовать программное обеспечение, которое вы создадите в будущем.

Конечно, если звук не чувствителен с точки зрения конфиденциальности, вы могли бы произвести на сторонезадача прослушивания аудио на что-то вроде механического турка Амазонки.

3 голосов
/ 22 апреля 2011

если вы знакомы с java, вы можете попытаться передать аудио файлы через минимум и рассчитать некоторые FFT-спектры.Молчание может быть обнаружено путем определения минимального уровня для амплитуды выборок (чтобы исключить шум).Для отделения речи от музыки можно использовать спектр БПФ временного окна.Речь использует несколько совершенно разных частотных диапазонов, называемых формантами - особенно для гласных - музыка распределена более равномерно по частотному спектру.

Вероятно, вы не получите 100% разделения речевых / музыкальных блоков, но стоит пометить файлы и прослушать только интересные части.

http://code.compartmental.net/tools/minim/

http://en.wikipedia.org/wiki/Formant

2 голосов
/ 22 апреля 2011

Я написал в блоге статью об использовании распознавания речи в Windows. У меня есть базовый учебник по преобразованию аудио файлов в текст на C #. Вы можете проверить здесь .

2 голосов
/ 22 апреля 2011

Две идеи:

  • Посмотрите в поле «распознавание речи», например CMUSphinx
  • Audacity имеет инструмент "Усеченная тишина", который может быть полезен.
0 голосов
/ 15 ноября 2017

Я бы начал здесь,

http://alize.univ -avignon.fr /

http://www -lium.univ-lemans.fr /diarization / doku.php / quick_start

кодовые блоки :: хорошо для gcc

0 голосов
/ 19 февраля 2013

Попробуйте смелость + просмотреть трек как спектрограмму (logf) + потренируйте свои глаза (!) Для распознавания речи.Вам нужно будет настроить шкалу времени и окно БПФ.

...