C#TTS语音播报带背景音乐

C#TTS语音播报带背景音乐

1、首先添加引用Microsoft Speech Object Library
在这里插入图片描述
2、然后在程序中以及声明一个对象
using System.Speech.Synthesis;
//提供对已安装的语音合成引擎访问对象
SpeechSynthesizer synth = new SpeechSynthesizer();

3、写两句柄函数,用于向控制接口发送控制命令和获得返回执行状态错误代码的描述 也就是用于播放背景音乐的方法


        /// <summary>
        /// 向媒体控制接口发送控制命令
        /// </summary>
        /// <param name="lpszCommand">命令,参见
        /// http://msdn.microsoft.com/en-us/library/windows/desktop/dd743572(v=vs.85).aspx </param>
        /// <param name="lpszReturnString">命令返回的信息,如果没有需要返回的信息可以为null</param>
        /// <param name="cchReturn">指定返回信息的字符串大小</param>
        /// <param name="hwndCallback">回调句柄,如果命令参数中没有指定notify标识,可以为new IntPtr(0)</param>
        /// <returns>返回命令执行状态的错误代码</returns>
        [DllImport("winmm.dll")]
        static extern Int32 mciSendString(string lpszCommand, StringBuilder returnString, int bufferSize, IntPtr hwndCallback);
        /// <summary>
        /// 返回对执行状态错误代码的描述
        /// </summary>
        /// <param name="errorCode">mciSendCommand或者mciSendString返回的错误代码</param>
        /// <param name="errorText">对错误代码的描述字符串</param>
        /// <param name="errorTextSize">指定字符串的大小</param>
        /// <returns>如果ERROR Code未知,返回false</returns>
        [DllImport("winmm.dll")]
        static extern bool mciGetErrorString(Int32 errorCode, StringBuilder errorText, Int32 errorTextSize);

4、然后写SpeechSynthesizer 对象的语音开始播放事件和结束播放事件,用于播放和停止背景音乐


   synth.SpeakStarted += Synth_SpeakStarted;
   synth.SpeakCompleted += Synth_SpeakCompleted;

	 #region 结束播放时停止背景音乐播放
        private void Synth_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
        {
            mciSendString("close myDivece", null, 0, new IntPtr(0)); //关闭
        }
        #endregion

        #region 开始播放时同时播放背景音乐
        private void Synth_SpeakStarted(object sender, SpeakStartedEventArgs e)
        {
            int error = mciSendString(@"open C:你的路径\背景音乐\1.wav alias myDivece", null, 0, new IntPtr(0));
            if (error == 0)
            {
                mciSendString("play myDivece", null, 0, new IntPtr(0)); //播放
            }
        }
        #endregion

5、下载几个背景音乐.wav格式的 自行下载即可,这里我是在包图网下载的

6、声明一个对象用于获得所有已安装的语音包

 List<InstalledVoice> voiceList = synth.GetInstalledVoices().ToList<InstalledVoice>();

7、就可以调用TTS语音播放

for (int i = 0; i < voiceList.Count; i++)
{
     string speakContent = "大家好 我是大帅哥";
     string strTem2p = voiceList[i].VoiceInfo.Name.ToString();
     synth.SelectVoice(strTem2p);
     synth.SpeakAsync(speakContent);
}

8、以上就是调用语音合成引擎的主要细节内容,小项目,可以选择语音包,可以设置声音大小和语速,仅用于记录下日常笔记,需要的可以参考下
9、附上我某个小项目的需求功能截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
项目中1、使用到了Access数据库,用于记录下历史数据,2、使用到了Http服务端,用于接收外部传输进来的接口数据,3、使用到了并发队列,用于接收外部接口并发进来的数据处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工控程序狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值