C: разбить файл WAV по паузе тишины - PullRequest
2 голосов
/ 21 октября 2011

У меня есть куча людей, читающих простое предложение (привет мир) в виде файла WAV, Как я могу разбить файл WAV на 2 файла WAV, каждый из которых содержит слово (привет и мир), автоматически распознавая разрыв между словами? К сожалению, я не смог найти инструмент, чтобы сделать это для меня, поэтому я напишу код C, который делает это, Что касается моего недоумения, пробелы должны быть низкими числовыми значениями в файле WAV, это правильно? Я знаю, как разбить файлы, Буду рад получить подход к проблеме распознавания пропусков. Спасибо!

Ответы [ 3 ]

3 голосов
/ 01 января 2014

http://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/

Я уверен, что это ссылка, которая вам нужна.

 sox in.wav out.wav silence 1 0.5 1% 1 5.0 1% : newfile : restart

SoX будет разделять звук, когда обнаружит 5 или более секунд молчания.Вы получите выходные файлы с именами out001.wav, out002.wav и т. Д.

2 голосов
/ 21 октября 2011

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

Однако в обычной речи между словами может не быть большой паузы.Если я скажу вам «helloworld» без паузы, вы легко поймете меня.

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

1 голос
/ 21 октября 2011

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

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

...