语音播报功能 C# net4.5代码

1.引用

  • 开发环境:Visual Studio(任意支持.NET 4.5 的版本, VS2022)
  • 项目配置:创建 控制台应用程序(.NET Framework 4.5)
  • 引用程序集:System.Speech 不是默认引用,需要手动添加:
    • 右键项目 → 「添加」→ 「引用」
    • 切换到「程序集」→ 「框架」
    • 勾选 System.Speech → 「确定」

2.代码

实现了基本语音播报 、自定义语速 / 音量 、中文播报三个核心功能,包含异常处理,避免运行报错。

cs 复制代码
using System;
using System.Speech.Synthesis; // 核心命名空间,提供语音合成功能

namespace SpeechBroadcastDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 实例化语音合成器(核心类,负责语音播报的所有操作)
            using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
            {
                try
                {
                    // ------------- 可选配置:自定义语音参数 -------------
                    // 1. 设置音量(0-100,默认100)
                    synthesizer.Volume = 80;

                    // 2. 设置语速(-10到10,默认0,数值越大语速越快,负数放慢)
                    synthesizer.Rate = 0;

                    // 3. 选择中文语音(若系统没有中文语音包,会使用默认语音(通常是英文))
                    // 优先选择中文(简体)语音引擎
                    synthesizer.SelectVoiceByHints(VoiceGender.Neutral, VoiceAge.Adult, 0, System.Globalization.CultureInfo.GetCultureInfo("zh-CN"));

                    // ------------- 核心功能:语音播报 -------------
                    Console.WriteLine("开始语音播报...");
                    
                    // 方式1:同步播报(阻塞线程,直到播报完成才执行后续代码)
                    string broadcastContent = "你好,这是基于.NET 4.5的语音播报测试,当前舌头涩的症状可以通过食用梨、甘蔗等水果缓解。";
                    synthesizer.Speak(broadcastContent);

                    // 方式2:异步播报(不阻塞线程,播报同时可以执行其他代码)
                    // synthesizer.SpeakAsync("这是异步语音播报,不会阻塞控制台后续操作。");
                    // 异步播报时,可通过 synthesizer.SpeakAsyncCancel() 取消播报

                    Console.WriteLine("语音播报完成!");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"语音播报失败,错误信息:{ex.Message}");
                    Console.WriteLine("提示:请检查系统是否安装了语音包,或是否正确引用了System.Speech程序集。");
                }

                Console.ReadLine();
            }
        }
    }
}

3.关键代码解释

  1. SpeechSynthesizer 类 :这是 System.Speech 命名空间的核心类,负责创建语音合成实例,提供音量、语速设置和播报功能,使用 using 语句包裹可自动释放资源,避免内存泄漏。
  2. SelectVoiceByHints 方法:用于选择指定类型的语音引擎,这里指定了「中文(简体)」,确保能播报中文内容。如果你的 Windows 系统没有安装中文语音包,会自动使用系统默认语音(通常是英文),此时中文内容会播报为乱码或无法识别。
  3. Speak() 与 SpeakAsync() :
    • Speak():同步播报,阻塞当前线程,适合简单的、无需并行执行其他操作的场景。
    • SpeakAsync():异步播报,不阻塞当前线程,适合需要在播报同时执行其他逻辑(如界面操作、数据处理)的场景。
  4. 异常处理:捕获可能出现的错误(如无语音引擎、程序集引用失败等),并给出明确提示,方便排查问题。

4、补充说明

  1. 若无法播报中文:
    • 打开「控制面板」→ 「轻松使用」→ 「语音识别」→ 「文本到语音转换」
    • 查看「语音选择」是否有中文选项(如「微软慧涛」「微软小云」),若无则需要下载安装中文语音包。
  2. 该方案仅支持 Windows 系统 :System.Speech 依赖 Windows 自带的语音引擎,Linux 或 macOS 系统无法运行,若需要跨平台,需使用第三方库(如 NAudio 配合第三方 TTS 引擎)。
  3. 如需更复杂的语音合成(如保存语音为 WAV 文件),可添加 synthesizer.SetOutputToWaveFile(@"D:\语音播报保存.wav");(放在播报前),即可将语音内容保存为音频文件。

总结

  1. .NET 4.5 语音播报优先使用System.Speech程序集,无需第三方依赖,仅支持 Windows 环境。
  2. 核心步骤为「添加程序集引用」→ 「实例化SpeechSynthesizer」→ 「配置参数」→ 「调用Speak()/SpeakAsync()播报」。
  3. 中文播报需确保系统安装了中文语音包,否则会使用默认英文语音引擎导致中文无法正常播报。
相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹3 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
Polevne3 天前
C# SFTP客户端实现文件传输
c#·ssh
samble3 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
cjp5603 天前
024 . WPF MVVM类封装优化
c#
淡海水4 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
asdzx674 天前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本
2501_930707784 天前
使用C#代码使用条件格式为 Excel 隔行设置颜色
c#·excel
何以解忧唯有撸码4 天前
【开源】c#造个轮子-日程安排工具
c#·自定义控件