客服

客服

点击联系站长 点击联系站长

在线时间
12:00 - 22:00

客服微信

客服微信
交流QQ群

734653993

站长QQ 2362400196

ESP-AI实现播放音乐

音源

播放音乐首先要解决音源问题,各大音乐平台限制多,第三方的又不稳定,那怎么办?答案就是自建

推荐一个音乐下载平台

https://tools.liumingye.cn/music/#/

测试平台

为了各大开发者方便,我在这里提供一个测试平台,没有做安全策略,切勿破坏

 

http://1.14.103.227

如何使用

平台引出了一个接口,将接口填到esp-ai配置文件即可

http://1.14.103.227:5000/audio?name=

音乐播放部分代码

intention: [
            {
                // 关键词
                key: ["播放音乐", "来首音乐","音乐"],
                // 内置的睡眠指令
                // 向客户端发送的指令
                instruct: "__play_music__",
                message: "好的!",
                music_server: async (name, { user_config }) => { 
                    
                    return {
                        url:"http://127.0.0.1:5000/audio?name="+name,
                        seek: 0,
                        message: ''
                    };
                },
                on_end: (arg) => {
                    // 请求业务服务器保存进度信息 ...
                    console.log(arg);
                }
                
            },
            {
            },
            {
                /**
                 * 正则匹配
                 * 如:播放音乐倒数,来首音乐倒数,我想听倒数  
                 * 如果库里没有音乐,将随机播放
                */
                key: async (text = "", llm_historys) => {
                   
                    const regex = /^(播放音乐|来首音乐|我想听)(.*)$/;
                    const match = text.match(regex);
                    if (match) {
                        const songName = match[2];
                        console.log("音乐名称:", songName);
                        return songName;
                    } else {
                        return false;
                    }
                },
                // 向客户端发送的指令
                instruct: "__play_music__",
                message: "好的!",
                /**
                 * 用于返回音频地址和播放进度
                 * 目前只支持 mp3、wav 格式
                 * @param {String} name 是歌曲名称
                 * @return {number} seek 进度: (以秒为单位)
                 * @return {message} 找不到数据时的TTS
                */ 
                music_server: async (name, { user_config }) => { 
                    
                    return {
                        url:"http://127.0.0.1:5000/audio?name="+name,
                        seek: 0,
                        message: ''
                    };
                },
                on_end: (arg) => {
                    // 请求业务服务器保存进度信息 ...
                    console.log(arg);
                }
                
            },
        ],

完整代码

const espAi = require("esp-ai"); 
const config = { 

    gen_client_config: ()=>({

        // 调用讯飞语音识别
        iat_server: "xun_fei",
        iat_config: {
            // 讯飞:https://console.xfyun.cn/services/iat  。打开网址后,右上角三个字段复制进来即可。
            appid: "",
            apiSecret: "",
            apiKey: "",  
        },

        // 调用讯飞LLM
        llm_server: "xun_fei",
        llm_config: {
          
           
            // llm_server 中可配置的其他配置项...
            appid: "",
            apiSecret: "",
            apiKey: "", 
            llm : "v4.0"
        },
        tts_server: "xun_fei",
        tts_config: {
            appid: "",
            apiSecret: "",
            apiKey: "", 
            //is_clone: false, // 是否为克隆的音色
            // tts_server 中可配置的其他配置项...
        },
        llm_init_messages: [
            { role: 'system', content: '你是小明同学,是一个无所不能的智能助手。' },
          ],
          
        intention: [
            {
                // 关键词
                key: ["播放音乐", "来首音乐","音乐"],
                // 内置的睡眠指令
                // 向客户端发送的指令
                instruct: "__play_music__",
                message: "好的!",
                music_server: async (name, { user_config }) => { 
                    
                    return {
                        url:"http://1.14.103.227:5000/audio?name="+name,
                        seek: 0,
                        message: ''
                    };
                },
                on_end: (arg) => {
                    // 请求业务服务器保存进度信息 ...
                    console.log(arg);
                }
                
            },
            {
            },
            {
                /**
                 * 正则匹配
                 * 如:播放音乐倒数,来首音乐倒数,我想听倒数  
                 * 如果库里没有音乐,将随机播放
                */
                key: async (text = "", llm_historys) => {
                   
                    const regex = /^(播放音乐|来首音乐|我想听)(.*)$/;
                    const match = text.match(regex);
                    if (match) {
                        const songName = match[2];
                        console.log("音乐名称:", songName);
                        return songName;
                    } else {
                        return false;
                    }
                },
                // 向客户端发送的指令
                instruct: "__play_music__",
                message: "好的!",
                /**
                 * 用于返回音频地址和播放进度
                 * 目前只支持 mp3、wav 格式
                 * @param {String} name 是歌曲名称
                 * @return {number} seek 进度: (以秒为单位)
                 * @return {message} 找不到数据时的TTS
                */ 
                music_server: async (name, { user_config }) => { 
                    
                    return {
                        url:"http://1.14.103.227:5000/audio?name="+name,
                        seek: 0,
                        message: ''
                    };
                },
                on_end: (arg) => {
                    // 请求业务服务器保存进度信息 ...
                    console.log(arg);
                }
                
            },
        ],


    })
    
};


const espAiIns = espAi(config);

// 在合适的时机可以调用方法来在服务端实现设备操作
// espAiIns.restart("[device_id]") // 重启设备
// espAiIns.tts("[device_id]", "你好啊")   // 让设备说话
// ...

音乐服务后端开源

 

更新中。。。。

 

请登录后发表评论

    没有回复内容