Это потенциально очень сложный вопрос, и он похож на написание собственного алгоритма распознавания (или идентификации) речи.
Вы начнете с преобразования звука в частотную область, что делается с помощью быстрого преобразования Фурье .
Для каждого среза во времени, который вы берете БПФ, это даст вам список частот и их амплитуд. Вам нужно будет как-то обнаружить основной тон, анализируя гармоники. 2-я и 3-я гармоники будут четкими. Очень трудно понять, какие они гармоники, особенно с фоновым шумом и естественным различием между голосами людей, с точки зрения того, какие гармоники самые громкие. Затем вы можете попытаться определить, является ли говорящий мужчиной или женщиной, исходя из того, как вы догадались, каким будет основной тон.
Имейте в виду, что во многих частях речи, таких как sibilance ('s', 't' и т. Д.), Нет тона, только шум Это должно быть довольно умно.
Надежда, которая направляет вас в правильном общем направлении.
Примечание: если два голоса одновременно и вы хотите их аккуратно разделить, то это вам не поможет. Я не верю, что кто-нибудь в живых решил эту проблему.