• 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(); } }
  • 相关阅读:
    Beginning Python From Novice To Professional读书笔记
    Google's Python Class
    Screen scraping 3
    Screen scraping 1
    Screen scraping 2
    《发现你的销售力量》读书笔记
    不可思议的每日培训
    “项目计划与跟踪最佳实践”讲座(2010年7月)现接受企业申请
    “活用类图,把握需求主动权”讲座(2010年6月)现接受企业申请
    项目健康状况检查
  • 原文地址:https://www.cnblogs.com/mirrortom/p/9153058.html
Copyright © 2020-2023  润新知