Я разрабатываю приложение, и мне нужен какой-то способ сравнить 2 голоса, если они совпадают или нет, я знаю, что Voice Recognizer - это способ сделать это, но поскольку (я думаю) ему сначала нужно перевести голос в строку, он не будет так подходить для другого языка, кроме языка, поддерживаемого распознавателем речи .... есть идеи? Как и в старых телефонах, голосовая метка, в которой он просто сравнивает голосовой ввод с голосом, записанным ранее во время настройки.
Сравните голосовой wav в Android или голосовой тег (голосовые команды) API
Ответы (2)
Относительно сделать это можно с помощью БПФ (быстрого преобразования Фурье) для преобразования данных во временной области исходного файла WAV в данные в частотной области (в которых каждое значение в преобразованном массиве представляет относительная величина/интенсивность конкретной полосы частот).
Если один и тот же человек дважды произносит одно и то же слово, результирующие данные во временной области, тем не менее, будут сильно различаться в числовом отношении в двух файлах WAV. Преобразование обоих файлов WAV в частотную область (используя одинаковый размер окна БПФ для обоих, даже если два файла имеют немного разную длину) создаст массивы частот, которые будут намного более похожи друг на друга, чем исходные файлы WAV.
К сожалению, мне не удалось найти какие-либо библиотеки БПФ специально для Android. Вот вопрос, который ссылается на некоторые библиотеки на основе Java:
Библиотека обработки сигналов в Java?
Идея состоит в том, чтобы сравнить сходство голосов в их спектрограммах. Характеристики спектрограммы надежны и устойчивы к шуму, что является хорошим ориентиром для анализа двух голосов. Если вы выберете этот подход, вы должны сначала выяснить особенности голосов, а затем вам нужно знать, как сравнивать функции на двух спектрограммах, это относится к распознаванию образов.
Этот API http://code.google.com/p/musicg-sound-api/ написан на Java и может использоваться в Android. Он фиксирует волновую спектрограмму.