用C或Java或PHP进行语音识别?

是否有任何众所周知的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 /

在此处输入图像描述

  1. 添加库

  2. 复制并粘贴代码:

    a)将xml文件放在某处,可以从代码中加载:

    https://gist.github.com/2551321

    b)使用这个:

     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人员 – 使用.Net或Microsoft.Speech的System.Speechfunction并安装Microsoft提供的免费识别器。 Windows 7包含完整的语音引擎。 其他人可以免费下载。 有一个称为SAPI的相同引擎的C ++ API。 请参阅http://msdn.microsoft.com/en-us/magazine/cc163663.aspx 。 或者http://msdn.microsoft.com/en-us/library/ms723627(v=vs.85).aspx 。 有关Windows的Microsoft引擎的更多背景System.Speech.Recognition和Microsoft.Speech.Recognition之间的区别是什么?

Linux人员 – Sphinx似乎有很好的追随者。 见http://cmusphinx.sourceforge.net/和http://cmusphinx.sourceforge.net/wiki/

商业产品 – Nuance,Loquendo,AT&T,其他

在线服务 – Nuance,Yapme,其他

当然这也可能有用 – http://en.wikipedia.org/wiki/List_of_speech_recognition_software

有一个Java语音API。 请参阅Java Speech API http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-guide/Recognition.html中的javax.speech.recognition。 我相信您仍然需要找到支持此API的语音引擎。 我不认为Sphinx完全支持它 – http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#support_jsapi

还有很多其他的SO问题: 需要用于Linux的文本到语音和语音识别工具

嗯。 一个有趣的话题。 虽然多年前我在Amiga上花了很多时间玩一些(相当基本的)语音识别软件,但我还没有做过任何关于这种事情的工作。 它很有趣,但并不像伪代码示例那么简单。

您将需要第三方API库。 (我想有可能自己编写,但我不认为你是一个可行的想法)

有许多API库可用; 谷歌出现了几个 – 这是我得到的结果之一: http : //en.wikipedia.org/wiki/Microsoft_Speech_API – 但你可能需要尝试一些,直到你得到一个满足你的需求。

它有可能成为一个商业API – 即你必须付钱。 可能有一些开源的(我在谷歌中没有看到任何谷歌,但我确定它们存在),但它们可能更难以使用。

一旦你拥有一个你满意的图书馆,并且你已经编写了与之接口的代码,你的工作就没有完成,因为语音识别是一个非常棘手的工作。

不同的口音只是问题的开始。 说话者的性别和他们说话的速度也会影响识别所说内容的能力。 人类在识别语音方面比计算机好得多,但即便是我们也会用一些不熟悉的口音来挣扎。

通常需要训练语音识别软件以识别特定的单词和短语。 你肯定不会尝试匹配一个字符串,如你的例子; 你要求它发现它被训练识别的一个特定的短语。

简而言之,这是一个非常大的领域,你显然只是将你的脚趾浸入其中。 我希望它适合你,但我看到你很快就会有很多研究时间!

以下是一些可能对您有所帮助的其他链接:

试试我的C库libsprec,它是围绕Google的语音识别引擎构建的:

http://github.com/H2CO3/libsprec

HTK是C的更受欢迎的框架之一。

http://htk.eng.cam.ac.uk/

它不容易使用,但绝对是强大的。

JARVIS Java Speech API非常强大且function强大,是Sphinx的极简主义替代品。

https://github.com/The-Shadow/java-speech-api