2011-02-08 1 views
6

Я разрабатываю приложение, и мне нужно каким-то образом сравнить 2 голоса, если они совпадают или нет, я знаю, что Voice Recognizer - это способ сделать это, но так как (я думаю) ему нужно сначала перевести голос в строку, он не будет настолько подходящим для другого языка, кроме языка, поддерживаемого распознающим речи .... любая идея? Точно так же, как и предыдущий телефон, голосовой тег, где он просто сравнивает голос с голосом, записанным ранее во время настройкиСравнить voice wav в андроиде или голосовой команде API

+0

Вы пытаетесь признать, что обе записи были одним и тем же оратором (аутентификация голоса или идентификация динамика) или вы пытаетесь определить, что одни и те же слова были произнесены? Что вам подходит? личность говорящего или слова, которые он говорил? –

+0

Привет. как вы это решаете? –

ответ

5

A Относительно простым способом сделать это - использовать FFT (быстрое преобразование Фурье) для преобразования данных во временной области исходного WAV-файла в данные частотной области (в которых каждое значение в преобразованном массиве представляет относительную величину/интенсивность конкретной полосы частот).

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

К сожалению, я не смог найти библиотеки FFT специально для Android. Вот вопрос, который ссылается на некоторые библиотеки Java на основе:

Signal processing library in Java?

+0

Спасибо, но я действительно удивлен, почему мой старый мото-телефон может это сделать, и этот новый глупый андроид не может, ом, я просто хочу записать свой голос, а потом повторить его, и он будет знать, если он рядом с оригиналом! Я не хочу делать эту сложную вещь, я имею в виду, если они будут точно такими же не проблема, но есть много алгоритмов, чтобы решить, находится ли она рядом с оригиналом или нет, я не хочу изобретать колесо! – rami

+0

Да, похоже, что материал распознавания речи, запеченный в Android, не работает так, как вы хотите. Я думаю, что производители действительно отходили от того, как ваш автомобиль распознал речевое распознавание, поскольку этот более старый способ зависел от «обучения» вашего телефона, чтобы распознать ваш голос. Конечно, это то, что вам нужно, но это считалось серьезной слабостью и, по-видимому, почему-то больше не нравится. – MusiGenesis

+0

MusiGenesis прав. Старый способ распознавания голоса состоял в том, что на телефоне были все библиотеки и программное обеспечение для обработки на самом устройстве. Андроиды открывают поток для Google, и вы на самом деле «разговариваете» с серверами Google, а не с телефоном. Затем сервер отправляет интерпретацию обратно на телефон. Это более точно, поддерживает больше функций и экономит место на телефоне таким образом. Но это вредно для того, что вы пытаетесь сделать, что несчастливо. :( – Brandon

1

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

Это api http://code.google.com/p/musicg-sound-api/ написано на java и может быть использовано в Android. Он захватывает волновую спектрограмму.

Смежные вопросы