net中内置了免费本地的语音识别与语音tts api System.Speech ,但是语音识别的精度没有商用收费的高,tts也比较机器化,说话太僵硬,不过未来微软肯定会继续更新解决这些问题
System.Speech 是 .NET Framework 自带的语音处理库,集成了基础的语音识别(Speech Recognition)和文字转语音(TTS,Text-to-Speech)功能。虽然功能相对简单,但胜在无需额外安装依赖,适合快速实现轻量级语音交互场景。
一、文字转语音(TTS)实现
System.Speech.Synthesis 命名空间提供了文字转语音功能,支持选择语音、调整语速和音量等。
基本示例(播放中文文本):using System; using System.Speech.Synthesis; class TextToSpeechDemo { static void Main() { // 创建语音合成器实例 using (SpeechSynthesizer synthesizer = new SpeechSynthesizer()) { try { // 1. 配置语音(选择中文语音包,需系统已安装) foreach (var voice in synthesizer.GetInstalledVoices()) { var info = voice.VoiceInfo; // 筛选中文语音(zh-CN 为中国大陆普通话) if (info.Culture.Name == "zh-CN") { synthesizer.SelectVoice(info.Name); Console.WriteLine($"已选择语音:{info.Name}({info.Description})"); break; } } // 2. 调整语速(-10 到 10,默认 0) synthesizer.Rate = 0; // 3. 调整音量(0 到 100,默认 100) synthesizer.Volume = 80; // 4. 播放文本(同步播放) string text = "你好,欢迎使用 System.Speech 文字转语音功能。这是一个测试句子。"; Console.WriteLine("正在播放:" + text); synthesizer.Speak(text); // 5. 也可以异步播放(不阻塞线程) // await synthesizer.SpeakAsync("这是异步播放的文本"); } catch (Exception ex) { Console.WriteLine("错误:" + ex.Message); } } } }注意事项:
需确保系统已安装 中文语音包(默认可能只有英文):
Windows 系统:进入「设置 → 时间和语言 → 语音 → 语音选择」,添加「中文(中国大陆)」语音。
支持保存为音频文件(如 WAV):
// 保存到文件 synthesizer.SetOutputToWaveFile("output.wav"); synthesizer.Speak("这是保存到文件的语音"); synthesizer.SetOutputToDefaultAudioDevice(); // 恢复输出到扬声器
二、语音识别(Speech Recognition)实现
System.Speech.Recognition 命名空间提供语音识别功能,支持通过语法规则或听写模式识别语音。
基本示例(识别中文指令):using System; using System.Speech.Recognition; class SpeechRecognitionDemo { static void Main() { // 创建语音识别引擎(需指定文化区域为中文) using (SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("zh-CN"))) { try { // 1. 配置识别源(麦克风) recognizer.SetInputToDefaultAudioDevice(); // 2. 定义语法(识别指定指令,提高准确率) var grammarBuilder = new GrammarBuilder(); grammarBuilder.Culture = new System.Globalization.CultureInfo("zh-CN"); // 添加可能的指令 grammarBuilder.Append(new Choices("你好", "打开应用", "关闭程序", "退出")); var grammar = new Grammar(grammarBuilder); recognizer.LoadGrammar(grammar); // 3. 注册识别事件 recognizer.SpeechRecognized += (sender, e) => { if (e.Result.Confidence > 0.7) // 过滤低置信度结果 { Console.WriteLine($"识别结果:{e.Result.Text}(置信度:{e.Result.Confidence:F2})"); // 根据指令执行操作 if (e.Result.Text == "退出") { Console.WriteLine("正在退出..."); Environment.Exit(0); } } else { Console.WriteLine("识别结果可信度低,请重试"); } }; // 4. 启动识别(连续识别模式) Console.WriteLine("请说话(指令:你好 / 打开应用 / 关闭程序 / 退出)..."); recognizer.RecognizeAsync(RecognizeMode.Multiple); // 保持程序运行 Console.ReadLine(); recognizer.RecognizeAsyncStop(); } catch (Exception ex) { Console.WriteLine("错误:" + ex.Message); } } } }注意事项:
需确保系统已安装 中文语音识别包(同 TTS 语音包位置)。
准确率受环境噪音、发音清晰度影响较大,适合简单指令识别。
支持听写模式(无固定语法,自由识别):
// 启用听写模式(需系统支持) recognizer.LoadGrammar(new DictationGrammar());
三、优缺点总结
文字转语音 | 无需额外依赖、集成简单、支持基础配置 | 语音自然度一般、可选语音包较少 |
语音识别 | 零成本、适合简单场景 | 准确率较低、不支持复杂语义理解 |
适用场景
简单的语音提示(如程序操作反馈)。
基础的语音指令控制(如开关操作)。
快速原型开发验证语音交互流程。
如果需要更高的准确率或更自然的语音,建议结合 Azure Speech SDK 等第三方服务使用。
网友回复