当前位置:   article > 正文

C#调用微软库的实现语音识别_c# 语音识别

c# 语音识别

早期, 我们用SpeechRecognitionEngine如下来进行语音识别,但是复杂的词条加上环境噪声,其实成功率是不高的。

  1. SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("zh-CN"));//初始化中文引擎
  2. Choices conmmonds = new Choices();
  3. conmmonds.Add(new string[] { "启动", "停止", "充电" });//添加词条
  4. GrammarBuilder gBuilder = new GrammarBuilder();
  5. gBuilder.Append(conmmonds);
  6. Grammar grammar = new DictationGrammar(); //new Grammar(gBuilder);
  7. grammar.Name = "default dictation";
  8. grammar.Enabled = true;
  9. recognizer.LoadGrammar(grammar);
  10. recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(Deal_SpeechRecongized);
  11. recognizer.SetInputToDefaultAudioDevice();//设置默认输入设备
  12. recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(3);
  13. recognizer.BabbleTimeout = TimeSpan.FromSeconds(2);
  14. recognizer.EndSilenceTimeout = TimeSpan.FromSeconds(1);
  15. recognizer.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(1.5);
  16. recognizer.RecognizeAsync(RecognizeMode.Multiple);//开始监控设备输入准备识别
  17. Speak(conmmonds + "测试语音");

另外一种方式,Microsoft的Speech SDK来实现语音的实时解读,然后根据接收到的文本内容进行处理,实现与用户的语音交互。

开发语音识别的需要使用注册Azure账号或测试api-key:

1. 准备工作

  • 安装SDK或库:根据所选服务,下载并安装对应的C# SDK或NuGet包。比如,如果您选择Microsoft的Azure Cognitive Services中的语音服务,您就需要安装Microsoft.CognitiveServices.Speech NuGet包。

2. 实现语音识别

使用C#代码初始化语音识别客户端,监听麦克风输入,转换为文本。

  1. 1using Microsoft.CognitiveServices.Speech;
  2. 2using Microsoft.CognitiveServices.Speech.Audio;
  3. 3
  4. 4// 初始化SpeechConfig,使用您的API Key和区域
  5. 5var config = SpeechConfig.FromSubscription("your-api-key", "your-region");
  6. 6config.SpeechRecognitionLanguage = "zh-CN"; // 设置语言
  7. 7
  8. 8// 设置音频配置,使用默认麦克风
  9. 9using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
  10. 10using var recognizer = new SpeechRecognizer(config, audioConfig);
  11. 11
  12. 12Console.WriteLine("请说话...");
  13. 13
  14. 14// 开始连续语音识别
  15. 15var result = await recognizer.RecognizeOnceAsync();
  16. 16
  17. 17if (result.Reason == ResultReason.RecognizedSpeech)
  18. 18{
  19. 19 Console.WriteLine($"识别到的文本: {result.Text}");
  20. 20 // 在这里处理识别到的文本,比如调用另一个函数进行反馈处理
  21. 21}
  22. 22else if (result.Reason == ResultReason.NoMatch)
  23. 23{
  24. 24 Console.WriteLine("没有识别到有效语音输入。");
  25. 25}
  26. 26else if (result.Reason == ResultReason.Canceled)
  27. 27{
  28. 28 var cancellation = CancellationDetails.FromResult(result);
  29. 29 Console.WriteLine($"识别被取消: {cancellation.Reason}");
  30. 30}

3. 实现语音反馈

处理完识别到的文本后,可以使用相同的Speech SDK将处理结果转换为语音反馈给用户。

  1. 1// 使用Text-to-Speech转换文本为语音
  2. 2var speechSynthesizer = new SpeechSynthesizer(config, null);
  3. 3
  4. 4var ssml = $"<speak version='1.0' xml:lang='zh-CN'><voice name='zh-CN-XiaoyiNeural'><prosody rate='medium'>{result.Text}</prosody></voice></speak>";
  5. 5var resultSynthesis = await speechSynthesizer.SynthesizeSsmlToWaveFileAsync(ssml, "output.wav");
  6. 6
  7. 7if (resultSynthesis.Reason == ResultReason.SynthesizingAudioCompleted)
  8. 8{
  9. 9 Console.WriteLine("语音合成完成。");
  10. 10 // 可以进一步处理,比如播放输出的音频文件
  11. 11}
  12. 12else if (resultSynthesis.Reason == ResultReason.Canceled)
  13. 13{
  14. 14 var cancellation = CancellationDetails.FromResult(resultSynthesis);
  15. 15 Console.WriteLine($"语音合成被取消: {cancellation.Reason}");
  16. 16}
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/979778
推荐阅读
相关标签
  

闽ICP备14008679号