语音识别引擎打破命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音识别引擎打破命令相关的知识,希望对你有一定的参考价值。

我正在编写一个需要识别用户口头命令的WPF应用程序。作为语音识别引擎的新手,我不确定如何以最好的方式完成我需要的工作。申请流程如下:

  • 用户说出一个关键词'唤醒'应用程序(来自Amazon Echo,要求用户说'Alexa')
  • 用户说出要执行的应用程序的命令(例如“播放某些艺术家的某些歌曲”)

我的问题是,我不确定在识别关键字后如何处理我的程序。如果我在播放关键词后播放用户说的歌曲,我是否需要开始新的语音识别器?这是我正在做的一些伪代码:

    private SpeechRecognitionEngine _listen;

    public frmHome()
    {
        InitializeComponent();
        SetupListen();
    }

    private void SetupListen()
    {
        ResetListener();
    }

    private void ResetListener()
    {
        _listen = new SpeechRecognitionEngine();

        Choices exChoices = new Choices();

        exChoices.Add(new String[] { "keyword" });

        GrammarBuilder gb = new GrammarBuilder();
        gb.Append(exChoices);

        Grammar g = new Grammar(gb);

        _listen.LoadGrammar(g);
        _listen.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sr_speechRecognized);
        _listen.SetInputToDefaultAudioDevice();
        _listen.RecognizeAsync();
    }

    private void sr_speechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        if (e.Result.Text.Equals("keyword"))
        {
            //start listening for the command
        }

        ResetListener();
    }
答案

您可以为开始/停止关键字使用单独的语法,并且具有一个标志变量,当使用start命令时,该变量设置为true。

然后在SpeechRecognized处理程序中,您可以检查该标志,然后继续搜索已识别的文本以获取命令文本。

如果您正在寻找一个小关键字,例如Alexa,您只需在处理发出的命令之前搜索已识别的关键字文本。 Searching the contents of a string

我希望这篇文章有所帮助:https://msdn.microsoft.com/en-us/magazine/dn857362.aspx

另一答案

_listen.RecognizeAsync();替换_listen.RecognizeAsync(RecognizeMode.Multiple));

现在您可以提供多个命令。

以上是关于语音识别引擎打破命令的主要内容,如果未能解决你的问题,请参考以下文章

语音识别引擎和复选框的困难时期

VC++基于微软语音引擎开发语音识别总结

保存 Android Stock 语音识别引擎的音频输入

语音识别不适用于 Android 5.1.1 Xamarin

微软TTS5.1语音引擎(中文).msi怎么用?

百度语音识别引擎使用