C#调用百度语音SKD实现语音播放

语音播放方式有很多种,但是这里主要介绍的调用百度sdk实现语音播放,需要在百度AII开放平台下载C# SDK压缩工具包

解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引用。还需要用到BASS音频处理类库,主要是对合成的语音进行输出。

百度语音:https://ai.baidu.com

BASS.NET类库下载:http://www.bass.radio42.com/index.html

直接进代码讲解(这里主要按最简单的方式实现,其它用户可以根据自己的需求进行扩展)

拖入一个button按钮,点击进入事件,主要代码如下,注意bass需要添加Bass.Net.dll引用

          int BASS_Stream=0; // BASS音频流

        private void button10_Click(object sender, EventArgs e)
        {
           // 将机器人回复的消息合成语音
            BaiduSpeech.Tts("众里寻他千百度", @".\resource\sound\temp_voice.mp3", speed, volume, person);
            Bass.BASS_StreamFree(BASS_Stream);
            Bass.BASS_Stop();
            Bass.BASS_Start();
            // 载入音频
            BASS_Stream = Bass.BASS_StreamCreateFile(@".\resource\sound\temp_voice.mp3", 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT);
            // 设置音量
            Bass.BASS_ChannelSetAttribute(BASS_Stream, BASSAttribute.BASS_ATTRIB_VOL, (float)trackBar2.Value / 100);
            // 播放音频
            Bass.BASS_ChannelPlay(BASS_Stream, true);
        }

BaiduSpeech是一个自定义的交互类,如下

 class BaiduSpeech
    {
        // 合成方法
        public static void Tts(string message,string savePath,int speed = 5, int volume = 7, int person = 4)
        {
            // 可选参数
            var option = new Dictionary<string, object>()
            {
                {"spd", speed }, // speed语速
                {"vol", volume }, // volume音量
                {"per", person }  //person 发音人4:情感度丫丫童声
            };
            var API_KEY = "你的 Api Key";//百度云控制台中创
            var SECRET_KEY = "你的 Secret Key";
            var client = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);//Tts需要添加AipSdk.dll引用
            var result = client.Synthesis(message, option);

            if (result.ErrorCode == 0)  // 或 result.Success
            {
                File.WriteAllBytes(savePath, result.Data);//savePath语音合成存的地址
            }
        }
    }

Tts方法各参数说明,参数一为需要合成的语音的文字,参数二为语音合成后存的地址,参数三为语速,参数四为音量,参数五为发音人。

如需要更加详细请参考百度sdk文档:https://ai.baidu.com/docs#/TTS-Online-Csharp-SDK/top

基本上已经完成了,但是测试的时候,可能测试的时候还是会出现各种异常。

提供两种异常处理方式:第一:Bass类型初始化,第二:需要将bass.dll放在\bin\Debug文件夹中

    // 初始化BASS
     Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_CPSPEAKERS, this.Handle);

//注意bass.dll是添加不了引用的,一写要确保将BASS库和所需的附加库放在项目可执行目录中。

(例如将bass.dll放在 。\ bin \ Debug文件夹中)

下载Bass.dll库文件本体可以在查找下载

http://www.un4seen.com/

也可以直接上百度网盘下载

链接:https://pan.baidu.com/s/1r_vuiKz8PVjzqTGQC6aD2g 
提取码:f81u 

猜你喜欢

转载自blog.csdn.net/weixin_39237340/article/details/92793615