Speech语音播报
Posted mirrortom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Speech语音播报相关的知识,希望对你有一定的参考价值。
System.Speech 这个命名空间,报可以阅读文字和播放音频.
环境 W10 VS2017 CMMT
1.添加程序集引用 System.Speech
2.实例化播音类,并且播放一个文本
SpeechSynthesizer speech = new SpeechSynthesizer(); // 语速[-10,10] this.speech.Rate = -2 // 音量[0,100] //this.speech.Volume = 100 // 播放当前时间 string nowtime = DateTime.Now.ToString("yyyy年MM月dd日HH点mm分"); // 这里使用异步播放. 同步播放时,会卡死窗体(如果用WINFORM) speech.SpeakAsync(nowtime); // 播放完毕之后,执行一个方法 speech.SpeakCompleted += Speech_SpeakCompleted
3.播放一段音频
SpeechSynthesizer speech = new SpeechSynthesizer(); // 建一个音频内容 PromptBuilder pb = new PromptBuilder(); // 音频地址 这个音频的格式是wav的.别的格式不行 pb.AppendAudio(path); // 播放这个音频 speech.SpeakAsync(pb);
4.使用PromptBuilder可以自定义播放内容
// 实现滴滴滴后整点报时 string audiopath="didi.wav"; string starttxt = "现在时刻"; string nowtime = DateTime.Now.ToString("yyyy年MM月dd日HH点mm分"); // PromptBuilder pb = new PromptBuilder(); // 加入滴滴滴声音 pb.AppendAudio(audiopath); // 停顿一下 pb.AppendBreak(PromptBreak.Medium); // 报现在时刻 pb.AppendText(starttxt); // 再停顿一下 pb.AppendBreak(PromptBreak.Medium); // 报时 pb.AppendText(nowtime); return pb;
二.用NAudio可以播放wav也能播放mp3
1.用nuget下载NAudio
2.
/// <summary> /// 使用NAudio播放音频.支持MP3,但不支持ogg /// </summary> class NAuidoHelp { private WaveOutEvent outputDevice; private AudioFileReader audioFile; /// <summary> /// 播放停止后执行一个自定义方法 /// </summary> private Action stopPlayCallBack; public void PlayAudio(string audiopath,Action stopHandler=null) {
// 播放完成之后,执行方法 if (outputDevice == null) { outputDevice = new WaveOutEvent(); outputDevice.PlaybackStopped += OnPlaybackStopped; }
// 载入音频文件 if (audioFile == null) { audioFile = new AudioFileReader(audiopath); outputDevice.Init(audioFile); } stopPlayCallBack = stopHandler; outputDevice.Play(); } /// <summary> /// 播放停止事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnPlaybackStopped(object sender, StoppedEventArgs e) { outputDevice.Dispose(); outputDevice = null; audioFile.Dispose(); audioFile = null; stopPlayCallBack?.Invoke(); } }
以上是关于Speech语音播报的主要内容,如果未能解决你的问题,请参考以下文章
C# System.Speech.dll 实现语音播报无需联网
C# System.Speech.dll 实现语音播报无需联网