C# windows语音识别与朗读示例,供大家参考,具体内容如下
本示例通过windows语音识别功能进行语音识别和文本朗读。
打开windows麦克风,点击start按键,大声朗读 “中国”、“美国”、“英国”,识别成功将发出“嘟”的提示音并朗读对应结果。
用到的语音识别模块包括:
1
2
|
using System.Speech.Recognition; using System.Speech.Synthesis; |
动态连接库文件在我的资源中下载.System.Speach.dll
示例界面如下:
程序源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
using System; using System.Runtime.InteropServices; using System.Speech.Recognition; using System.Speech.Synthesis; using System.Threading; using System.Windows.Forms; namespace Test { public partial class FormVoiceControl : Form { static SpeechSynthesizer SS = new SpeechSynthesizer(); private SpeechRecognitionEngine SRE = new SpeechRecognitionEngine(); //语音识别模块 private bool SRE_listening = false ; private int wordid; private string shibie; [DllImport( "kernel32.dll" )] public static extern bool Beep( int freq, int duration); public FormVoiceControl() { InitializeComponent(); } public void InitVoice() //语音识别初始化 { //SS.SelectVoice("lily"); SRE.SetInputToDefaultAudioDevice(); // 默认的语音输入设备,也可以设定为去识别一个WAV文 GrammarBuilder GB = new GrammarBuilder(); GB.Append( new Choices( new string [] { "中国" , "美国" , "英国" })); DictationGrammar DG = new DictationGrammar(); Grammar G = new Grammar(GB); G.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(G_SpeechRecognized); //注册语音识别事件 SRE.EndSilenceTimeout = TimeSpan.FromSeconds(2); SRE.LoadGrammar(G); } void G_SpeechRecognized( object sender, SpeechRecognizedEventArgs e) { Beep(500, 500); //已识别提示音 string result = e.Result.Text; switch (result) { case "中国" : shibie = "中国:五星红旗" ; choice(0); break ; case "美国" : shibie = "美国:星条旗" ; choice(1); break ; case "英国" : shibie = "英国:米字旗" ; choice(2); break ; } } private void Button1_Click( object sender, EventArgs e) { if (SRE_listening == false ) { button1.Text = "stop" ; SRE.RecognizeAsync(RecognizeMode.Multiple); } else { button1.Text = "start" ; SRE.RecognizeAsyncStop(); } lblanswer.Text = "" ; SRE_listening = !SRE_listening; } private void choice( int id) { wordid = id; Thread t1; Thread t2; t1 = new Thread( new ThreadStart(ShowAnswer)); t1.Start(); t1.Join(); t2 = new Thread( new ThreadStart(SpeekAnswer)); t2.Start(); } void ShowAnswer() //线程 { MethodInvoker mi = new MethodInvoker( this .dosomething); this .BeginInvoke(mi); } void dosomething() { lblanswer.Text = shibie; } void SpeekAnswer() //线程 { switch (wordid) { case 0: SS.Speak( "五星红旗" ); break ; case 1: SS.Speak( "星条旗" ); break ; case 2: SS.Speak( "米字旗" ); break ; } } private void FormVoiceControl_Load( object sender, EventArgs e) { InitVoice(); } } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/yx1234321/article/details/107078699