码迷,mamicode.com
首页 > 其他好文 > 详细

Speech语音播报

时间:2018-06-07 23:00:50      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:oid   执行   help   cti   地址   src   IV   dev   现在   

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语音播报

标签:oid   执行   help   cti   地址   src   IV   dev   现在   

原文地址:https://www.cnblogs.com/mirrortom/p/9153058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!