Подтвердить что ты не робот

Открытый исходный код для распознавания и распознавания голоса

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

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

  • Безмоментные регионы
  • Регионы, содержащие человеческую речь
  • Регионы, содержащие мою собственную речь (и мою бабушку)

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

  • Удаление тишины:

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 также включает в себя предварительные классификаторы, которые могут использоваться для классификации неизвестных сегментов как речи, так и музыки,

Ответ 4

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

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

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

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

Ответ 5

Две идеи:

  • Посмотрите в поле "распознавание речи", например CMUSphinx
  • Audacity имеет инструмент "Усекать тишину", который может быть полезен.

Ответ 6

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

Ответ 8

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