Сравнение двух аудио (локально сохраненная предварительно записанная голосовая команда и записанная с микрофона в приложении) в iOS

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

1-матч голосовые команды от одного и того же человека.

текст команды с двумя совпадениями.

Я применил много способов, но никто не работает в соответствии с моими ожиданиями.

Во-первых: используйте Speech to text Library, например OpenEars, SpeechKit, но эти библиотеки преобразуют только текст из речи.

Результат: сбой как мое ожидание

Второе: (печать аудио палец)

acrcloud Library: в этой библиотеке, я записываю команду и сохраняю этот mp3файл на сервере acrcloud и сопоставляюсь с живой записью (на которой говорят я) это не соответствует, но когда я воспроизвожу одну и ту же запись (записанный MP3 файл моего голоса), который загружается на сервер acrcloud, тогда он совпадает. Результат: сбой как мое ожидание

API.AI: в этой библиотеке, это похоже на речь в текст, я сохранил некоторую текстовую команду на своем сервере, а затем кто-то говорит одна и та же команда, результат получает успех. Результат: сбой как мое ожидание

Пожалуйста, предложите мне решить эту проблему для приложения iOS

Ответ 1

Вот как я подхожу к этому Если я правильно понимаю требования к ur:

  • Вам нужно будет сравнить звуковой спектр каждой записи в соответствии с человеком (посмотрите на vDSP в инфраструктуре Accelerate). Анализ БПФ с окном 1024 должен быть достаточным (если не попытаться удвоить его для более подробной информации) я начнет сравнение с 5-10 пиками в спектре и экспериментом оттуда. EZAudio для легкой реализации FFT, чтобы вы начали.

  • Используйте текст в текстовой библиотеке для соответствия тексту. Речевые акценты обычно значительно искажают результаты, поэтому я, вероятно, начну с попытки получить текст из аудио и сравнения вместо указания команды в тексте, чтобы она соответствовала.

Удачи!

Ответ 2

http://www.politepix.com/openears/ можно использовать в objective-c или если вы хотите быстро попробовать http://blog.tryolabs.com/2015/06/15/tlsphinx-automatic-speech-recognition-asr-in-swift/. Я никогда их не использовал, но у них, похоже, есть все, что вам нужно. Если вы не ищите библиотеки С++, должно быть больше вариантов, но, скорее всего, вам придется иметь дело с типичными проблемами переноса. Я действительно не рекомендую вам писать его самостоятельно, поскольку вы потратите некоторое время на изучение техник, чтобы затем импортировать библиотеку обработки сигналов, а затем начать писать свой собственный алгоритм. За исключением, конечно, если у вас есть время и интерес для этого.

Я бы порекомендовал вам начать интеграцию вашего приложения таким же образом, как и распознавание речи. Обычно разрабатываются: записываются куча примеров, строятся тесты и часто проверяются, если все включено/выключено.

Одна из наиболее важных вещей, которые я узнал при выполнении работы по распознаванию голоса (как для распознавания слов, так и для распознавания динамиков), заключалась в том, что качество записи оказывает большое влияние на то, что вы можете с ней сделать. Сделайте небольшую партию записей в самом тихом месте, где вы можете найти, тогда вы всегда будете иметь ориентир, сравнимый с более реальными записями.

Также попробуйте охватить все микрофоны, которые вы найдете в реальных приложениях на более позднем этапе, так как нет никаких внутренних гарантий того, что все микрофоны iphone будут созданы равными. Я бы ожидал, что он не будет меняться в разных моделях iphone, но кто знает?

Ответ 3

В общем, я думаю, вы должны использовать метод 1 с некоторой настройкой. Для локального аудио. Вы добавляете текстовую версию script, например: 1 аудио, источник script Для записи аудио. Используйте OpenEars, SpeechKit для преобразования аудио в текст

Попробуйте сравнить источник script и текст для получения результата. Вы должны отметить, какой текст должен быть стресс в источнике script для лучшего результата сравнения. Иногда у нас есть слово, как: вино, жена, белый... (попробуйте справиться с этим тоже)

GLHF