Обнаружение речи по сравнению с неречью на краях с помощью Python + pydub
У меня есть большое количество аудиофайлов, которые немного шумят и не полностью параллельны друг другу (разные голоса, разные уровни фонового шума).
Я хочу посчитать продолжительность времени в начале и конце каждой записи, которая не является человеческой речью. То есть каждая запись имеет форму: <0: шум, 1: речь, 2: шум> и я хочу длительность 0 и 2.
Я написал скрипт, который делает более или менее то, что я хочу, выполняя поиск в начале и конце файла с пороговым значением переменной dbFS, но в некоторых случаях он не может найти разумное значение. Возможно, это невозможно, потому что файлы слишком шумные, но, может быть, есть лучший метод, чем тот, который я реализовал (например, что-то, кроме объема, чтобы посмотреть, или какой-то более умный алгоритм).
https://gist.github.com/moui72/6f537928b04443fba9ca575573488263
Если у кого-нибудь есть совет, как улучшить мою точность и / или получить результаты из большего количества файлов с шумом, я был бы благодарен.
Примечание: я написал свой сценарий на основе ответа Алека на измерение длины тишины в начале аудиофайла (wav)