Эффективный метод проверки качества звукозаписи

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

Я думал о том, чтобы взять спектрограмму с известной хорошей записью и сравнить со спектрограммой с плохой записью, но записи будут иметь разную речь каждый раз, поэтому это может не сработать. Я изучал библиотеки, такие как Bass.Net и NAudio, но обработка аудио не является моей областью знаний.

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

Еще одной моей мыслью было использование какого-либо API распознавания речи для попытки обработки речи и записи транскрипта аудио в текстовый файл. Проблема заключается в том, что распознавание речи не очень точно, и такие API, как Microsoft Speech API, все еще могут пытаться распознавать речь даже в искаженной записи или в той, которая содержит кучу статических сигналов. Я видел, что у Nuance есть SDK- версия их программного обеспечения для распознавания речи, но у меня еще не было возможности взглянуть на SDK, поскольку они, похоже, не предлагают пробную версию SDK на своем веб-сайте.

2 ответа

Решение

Вы можете использовать существующие инструменты с открытым исходным кодом для измерения SNR для шумной речи. Для получения дополнительной информации см. http://labrosa.ee.columbia.edu/projects/snreval/

Я рекомендую вам попробовать WADA SNR

http://www.cs.cmu.edu/~robust/archive/algorithms/WADA_SNR_IS_2008/

Это довольно простой алгоритм, но его нетрудно спроектировать самостоятельно.

Отпечатки пальцев и ASR не работают наверняка, так как они пытаются устранить шум, чтобы не обнаружить его.

Я также ищу решение для аналогичной проблемы, и я нашел этот проект с открытым исходным кодом: https://github.com/dpwe/audfprint. Вы можете создать базу данных, а затем сравнить свой запрос (качество звука, в котором вы не уверены) с базой данных.

Другие вопросы по тегам