C# 使用System.Speech 进行语音播报和识别
1 using System.Speech.Synthesis;
2 using System.Speech.Recognition;
3
4
5 //语音识别
6 SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
7 SpeechSynthesizer speech = new SpeechSynthesizer();
8
9
10 //**************************使用System.Speech 制作文字转换成声音的程序*******************************
11 //rate: 范围为:-10~10;
12 //volume: 范围为:0~100;
13 //speektext: 待转换声音的文字
14 public void SpeechVideo_Read(int rate, int volume, string speektext) //读
15 {
16 speech.Rate = rate;
17 speech.Volume = volume;
18 speech.SpeakAsync(speektext);
19 }
20
21 public void SpeechVideo_Record(int rate, int volume, string recordtext) //录音
22 {
23 SpeechSynthesizer speech = new SpeechSynthesizer();
24 speech.Rate = rate;
25 speech.Volume = volume;
26 SaveFileDialog sfd = new SaveFileDialog();
27 sfd.Filter = "文本文件(*.wav)|*.wav|所有文件(*.*)|*.*";
28 //设置默认文件类型显示顺序
29 sfd.FilterIndex = 1;
30 //保存对话框是否记忆上次打开的目录
31 sfd.RestoreDirectory = true;
32 if (sfd.ShowDialog() == DialogResult.OK)
33 {
34 string localfilepath = sfd.FileName.ToString();
35 speech.SetOutputToWaveFile(localfilepath);
36 speech.Speak(recordtext);
37 speech.SetOutputToDefaultAudioDevice();
38 MessageBox.Show("完成录音!", "提示");
39 }
40 }
41
42 public void SpeechVideo_Pause() //暂停
43 {
44 speech.Pause();
45 }
46
47 public void SpeechVideo_Contine() //暂停后继续
48 {
49 speech.Resume();
50 }
51 //**************************************结束********************************************************
52
53
54
55
56 //*****************************************使用System.Speech 制作语音识别程序***********************
57 //rate: 范围为:-10~10;
58 //volume: 范围为:0~100;
59 //speektext: 待转换声音的文字
60 public void recEngine_Speech_RecordCheck() //读
61 {
62 Choices preCmd = new Choices();
63 preCmd.Add(new string[] { "name", "age" });
64 GrammarBuilder gb = new GrammarBuilder();
65 gb.Append(preCmd);
66 Grammar gr = new Grammar(gb);
67 recEngine.LoadGrammarAsync(gr);
68 recEngine.SetInputToDefaultAudioDevice();
69 recEngine.RecognizeAsync(RecognizeMode.Multiple);
70 recEngine.SpeechRecognized += recEngine_SpeechRecognized;
71 }
72
73 public void recEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
74 {
75 switch (e.Result.Text)
76 {
77 case "name":
78 MessageBox.Show("wangjin");
79 break;
80 case "age":
81 MessageBox.Show("23");
82 break;
83 }
84 }
85
86 //**************************************结束****************************************************//
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决