Windows Phone 8 app提供了新的API可以使用语音输入和输出。
对用户进行通信:语音合成 API
计算机生成的语音输出分别调用文本到语音 (TTS) 或语音合成
语音合成的简单示例代码示例:
- // 创建语音识别
- private SpeechSynthesizer speechOutput =
- new SpeechSynthesizer();
- private async void GetNewMemoByVoice()
- {
- await speechOutput.SpeakTextAsync("你们尹成大哥是微软全球最有价值专家");//语音播放
- }
当用户点击麦克风按钮时,就会听到语音播放。在下面的部分我会扩展此示例通过添加代码,以接受用户的输入使用语音识别。
TTS 功能先进的方案严重依赖语音输出的应用程序可能使用的情况下,需要更改音量、 音调或在致辞中的讲率输出。有两种方法:SpeakSsmlAsync 和 SpeakSsmlFromUriAsync。
语音输入:语音识别 API
语音识别应用程序中的使用案例两大类是文本输入和命令和控制。在第一个使用案例,文本输入的 app 只是捕获用户的话语作为文本 ; 这是有用的当用户可以说几乎所有东西,如"新"备注示例代码的功能。
在第二个使用案例、 指挥和控制,用户操作 app 口语话语而不是通过点击按钮或跨手机的脸上滑动手指。此使用案例是无手驾驶或烹饪等的方案中尤其有用。
语音识别的简单示例关于语音识别应用程序中的功能的详细信息之前,让我们看看最简单的例子:文本输入几行代码。
图 1 显示 GetNewMemoByVoice 方法显示较早前,但添加初始化一个识别器对象,该对象的行数与启动识别会话和处理结果。
图 1 初始化一个识别器对象、 启动识别会话及处理结果
- private SpeechRecognizerUI speechInput =
- new SpeechRecognizerUI();
- // 设置识别对象
- speechInput.Settings.ExampleText =
- "语音对象: \"百度一下尹成微软\"";
- speechInput.Settings.ListenText = "请领导指示";
- private async void GetNewMemoByVoice()
- {
- await speechOutput.SpeakTextAsync("请领导指示");
- var recoResult =
- await speechInput.RecognizeWithUIAsync();
- // 设置语音识别语法
- Memo_TB.Text =
- recoResult.RecognitionResult.Text; // 显示识别结果处理之
- }
当然,在实际代码中就永远不会这样,一样简单,如果你看魔术备注示例中,您将看到一个 try/catch 块,并检查成功识别。
如果您尝试此示例应用程序中通过点击麦克风图标,您会发现你说的话,您的备忘录后,出现"思维"屏幕,其次是 UI,确认后的结果在备注文本框中插入。幕后的很多事情上,最重要的是要识别语音的远程服务器上的"语法"的使用。