Сначала я собираюсь в общих чертах изложить, что я пытаюсь сделать, и попросить совета. Затем я объясню свой нынешний подход и попрошу ответы на свои текущие проблемы.
Проблема
У меня есть MP3-файл говорящего. Я хотел бы разбить его на сегменты, примерно соответствующие предложению или фразе. (Я бы сделал это вручную, но мы говорим о часах данных.)
Если у вас есть совет, как сделать это программно или для некоторых существующих утилит, я бы хотел его услышать. (Мне известно об обнаружении голосовой активности, я немного изучил это, но я не нашел никаких бесплатных утилит.)
Текущий подход
Я подумал, что проще всего будет сканировать MP3 через определенные промежутки времени и определять места, где средняя громкость ниже определенного порога. Затем я использовал бы существующую утилиту, чтобы разрезать mp3 в этих местах.
Я играл с pymad и считаю, что успешно извлек данные PCM (импульсная кодовая модуляция) для каждого кадра mp3. Теперь я застрял, потому что я действительно не могу понять, как данные PCM переводятся в относительный объем. Я также знаю о других усложняющих факторах, таких как несколько каналов, обратный порядок байтов против младшего и т. Д.
Совет о том, как сопоставить группу образцов pcm с относительным объемом, будет ключевым.
Спасибо!