Есть ли какая-либо известная установленная структура для C или Java или PHP для приложений распознавания речи? Микрофонный аудиовход, и он распознает английские слова. Например, псевдокод:
Speech s = new Speech(); s.input(micStream); result = s.recognise("Hello"); if (result) { printf("Matched hello"); } else { printf("No match found"); }
Следовать за:
Загрузите это: sphinx4 / 1.0% 20beta6 /
Добавить библиотеки
Копировать и вставить код:
a) файл xml помещен куда-нибудь, который можно загрузить из кода:
https://gist.github.com/2551321
б) используйте это:
package edu.cmu.sphinx.demo.hellowrld; import edu.cmu.sphinx.frontend.util.Microphone; import edu.cmu.sphinx.recognizer.Recognizer; import edu.cmu.sphinx.result.Result; import edu.cmu.sphinx.util.props.ConfigurationManager; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import models.Tts; public class Speech { public static void main(String[] args) { ConfigurationManager cm; if (args.length > 0) { cm = new ConfigurationManager(args[0]); } else { ///tmp/helloworld.config.xml cm = new ConfigurationManager(Speech.class.getResource("speech.config.xml")); } Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); recognizer.allocate(); Microphone microphone = (Microphone) cm.lookup("microphone"); if (!microphone.startRecording()) { System.out.println("Cannot start microphone."); recognizer.deallocate(); System.exit(1); } System.out.println("Say: (Hello | call) ( Naam | Baam | Caam | Some )"); while (true) { System.out.println("Start speaking. Press Ctrl-C to quit.\n"); Result result = recognizer.recognize(); if (result != null) { String resultText = result.getBestFinalResultNoFiller(); System.out.println("You said: " + resultText + '\n'); Tts ts = new Tts(); try { ts.load(); ts.say("Did you said: " + resultText); } catch (IOException ex) { } } else { System.out.println("I can't hear what you said.\n"); } } } }
Проверьте это: http://cmusphinx.sourceforge.net/
От просмотра этих вопросов в течение нескольких месяцев я видел, как большинство вариантов разработчиков ломаются следующим образом:
Пользователи Windows – используют функции System.Speech .Net или Microsoft.Speech и устанавливают бесплатные распознавания, предоставляемые Microsoft. Windows 7 включает в себя полный речевой движок. Другие можно скачать бесплатно. Существует API C ++ для тех же движков, что и SAPI. См. http://msdn.microsoft.com/en-us/magazine/cc163663.aspx . или http://msdn.microsoft.com/en-us/library/ms723627(v=vs.85).aspx . Дополнительные сведения о механизмах Microsoft для Windows В чем разница между System.Speech.Recognition и Microsoft.Speech.Recognition?
Лица Linux – Sphinx, похоже, имеет хорошие результаты. См. http://cmusphinx.sourceforge.net/ и http://cmusphinx.sourceforge.net/wiki/
Коммерческие продукты – Nuance, Loquendo, AT & T, другие
Онлайн-сервис – Нюанс, Япме, другие
Конечно, это также может быть полезно – http://en.wikipedia.org/wiki/List_of_speech_recognition_software
Существует Java-речевой API. См. Javax.speech.recognition в Java Speech API http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-guide/Recognition.html . Я считаю, что вам все еще нужно найти механизм речевой почты, который поддерживает этот API. Я не думаю, что Sphinx полностью его поддерживает – http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#support_jsapi
Есть много других SO quesitons: нужны инструменты для речевого и речевого распознавания речи для Linux
Хм. Интересная тема. Много лет назад я не занимался подобными вещами, хотя много лет назад я провел довольно много времени с некоторыми (довольно базовыми) программами распознавания речи на Amiga. Это весело, но не так легко, как ваш пример псевдокода заставляет его звучать.
Для этого вам понадобится библиотека API сторонних разработчиков. (Я думаю, что можно писать свои собственные, но я не думаю, что вы являетесь точкой, где это приемлемая идея)
Существует множество доступных библиотек API; Google появился несколько – вот один из результатов, которые я получил: http://en.wikipedia.org/wiki/Microsoft_Speech_API – но вам, вероятно, придется попробовать несколько, пока не получите тот, который соответствует вашим потребностям.
Вероятно, это будет коммерческий API, то есть вам придется заплатить за него. Могут быть некоторые версии с открытым исходным кодом (я не видел в своем беглом Googleing, но я уверен, что они существуют), но они, вероятно, будут намного сложнее использовать.
После того, как у вас есть библиотека, которой вы довольны, и вы написали свой код для взаимодействия с ней, ваша работа не выполняется, потому что распознавание речи – это очень сложная вещь, с которой нужно работать.
Различные акценты – это только начало проблемы. Пол докладчика и скорость, с которой они говорят, также влияют на способность распознавать сказанное. Люди гораздо лучше распознают речь, чем компьютеры, но даже мы боремся с некоторыми незнакомыми акцентами.
Программное обеспечение распознавания речи, как правило, должно быть обучено распознавать конкретные слова и фразы. Вы, конечно, не пытались бы сопоставлять строку, как в вашем примере; вы попросите его указать конкретную фразу, которую она обучила распознавать.
Короче говоря, это очень большое поле, которое вы, очевидно, просто погружаете в нос. Надеюсь, это будет хорошо для вас, но я вижу много исследований в ближайшем будущем!
Вот некоторые другие ссылки, которые могут вам помочь:
Попробуйте мою библиотеку C, libsprec, которая встроена в механизм распознавания речи Google:
HTK является одной из наиболее популярных схем для C.
Это нелегко использовать, но определенно мощно.
JARVIS Java Speech API очень надежный и функциональный и представляет собой минималистскую альтернативу Sphinx.