Как разделить мужские и женские голоса из аудиофайла (в c ++ или java) - PullRequest
4 голосов
/ 03 марта 2009

Я хочу различить между мужскими и женскими голосами в аудиофайле и разделить их. В качестве результата я хочу, чтобы два голоса были разделены. Можете ли вы мне помочь, может ли кодирование быть выполнено в java или c ++

Ответы [ 5 ]

12 голосов
/ 03 марта 2009

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

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

Для каждого среза во времени, который вы берете БПФ, это даст вам список частот и их амплитуд. Вам нужно будет как-то обнаружить основной тон, анализируя гармоники. 2-я и 3-я гармоники будут четкими. Очень трудно понять, какие они гармоники, особенно с фоновым шумом и естественным различием между голосами людей, с точки зрения того, какие гармоники самые громкие. Затем вы можете попытаться определить, является ли говорящий мужчиной или женщиной, исходя из того, как вы догадались, каким будет основной тон.

Имейте в виду, что во многих частях речи, таких как sibilance ('s', 't' и т. Д.), Нет тона, только шум Это должно быть довольно умно.

Надежда, которая направляет вас в правильном общем направлении.

Примечание: если два голоса одновременно и вы хотите их аккуратно разделить, то это вам не поможет. Я не верю, что кто-нибудь в живых решил эту проблему.

2 голосов
/ 09 июня 2013

Одним из таких инструментов, который делает это возможным, является LIUM spkdiarization . Написанный на Java и доступный по лицензии GPL, он является инструментом распознавания речи и использует статистические модели для мужчин, женщин и детей. К счастью для вас, модели предоставлены, и вы можете использовать их без необходимости отмечать записи и обучать модели.

См. Страницу сценариев в википедии LIUM с примерами, ищите на странице слово "пол".

2 голосов
/ 26 октября 2012

Я думаю, что это уже возможно. Я только начал посещать онлайн-курс по машинному обучению в Стэнфордском университете с профессором Эндрю Нгом, и во время первой лекции он демонстрирует демо, где обрабатывается аудиозапись двух перекрывающихся голосов и извлекаются отдельные голоса (то же самое с музыкой фон и говорящий человек). По-видимому, он использует алгоритм обучения без присмотра, который позволяет извлекать два базовых шаблона. Вы можете посмотреть этот курс (здесь есть одна версия курса: http://www.academicearth.org/courses/machine-learning)

0 голосов
/ 03 марта 2009

Я бы начал с того, что это невозможно. Распознавание речи очень, очень сложно.

Вам не ясно в вашем вопросе - голоса перекрываются? Если это так, разделить их будет нелепо трудно.

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

Вы можете сойти со средним тоном - мужские голоса обычно глубже, чем женские ..

0 голосов
/ 03 марта 2009

То, что вы спрашиваете, является чертовски сложной задачей. Томасруттер написал несколько «указателей», как это сделать - но, я думаю, алгоритм должен быть действительно очень надежным, если вы хотите использовать его везде (во всех видах музыки (с пением, конечно)). Возможно, было бы лучше / проще начать с отделения (разделения) одного сэмпла инструмента от песни.

...