C、Java 或 PHP 中的语音识别?[已关闭]

2022-08-30 16:13:07

有没有众所周知的C或Java或PHP框架来做语音识别应用程序?麦克风音频输入,它将识别英语单词。如伪代码:

Speech s = new Speech();
s.input(micStream);
result = s.recognise("Hello");
if (result) { printf("Matched hello"); } else { printf("No match found"); }

跟进:

下载这个: 狮身人面像4 / 1.0%20beta6/

enter image description here

  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");
            }
        }
      }
    }
    

答案 1

答案 2

通过几个月的观察这些问题,我看到大多数开发人员的选择都是这样分解的:

Windows folks - 使用.Net或Microsoft.Speech的System.Speech功能,并安装Microsoft提供的免费识别器。Windows 7 包括一个完整的语音引擎。其他的可以免费下载。有一个C++ API 连接到称为 SAPI 的相同引擎。见 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的语音引擎。我不认为狮身人面像完全支持它 - http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#support_jsapi

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


推荐