音源
播放音乐首先要解决音源问题,各大音乐平台限制多,第三方的又不稳定,那怎么办?答案就是自建
推荐一个音乐下载平台
https://tools.liumingye.cn/music/#/
测试平台
为了各大开发者方便,我在这里提供一个测试平台,没有做安全策略,切勿破坏
如何使用
平台引出了一个接口,将接口填到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]", "你好啊") // 让设备说话
// ...
音乐服务后端开源
更新中。。。。
没有回复内容