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(); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM