Closed DavinciEvans closed 3 months ago
@DavinciEvans 感谢提供的详细日志,从日志中我已经大概知道问题出在哪里了,下个版本会尝试修复。
你的小爱音箱型号是多少?感觉是跟机型有关,我无法在小爱音箱 Pro 上复现这个问题,
需要等我身边有相关机型配合测试,才能尝试进行相关的测试和问题定位。
我的是小爱音箱 Pro,也是同样的问题,mi-gpt的log文件一切正常,但是没有声音回复,tts的log也是显示没有调用,但是切换音色的指令在tts的log中显示有调用,但是不能确认是否正确切换。
@econwang 那就奇怪了,我能想到的原因只有一个,那就是你们配置的TTS _BASE_URL 在小爱音箱上访问异常。
造成无法访问可能的原因有:
TTS 是在同样的局域网下,手动调用 /api/tts.mp3 能正常工作
很神奇,咱俩一样的型号,而且我也是局域网,我这边一切正常,复现不出来。
你贴一下 tts 项目的输出日志看下,还有migpt 打开 debug 看下切换音色时的日志。
tts的日志
看日志是 TTS server 端压根没收到来自小爱音箱相关的 tts 请求,
检查你的小爱音箱配网的wifi是否跟你的 tts server 端在同一局域网环境下。
@DavinciEvans 麻烦贴一下你的 TTS Server 端的日志看下原因,或者在我微信公众号后台私发一下你的 TTS 公网地址,我本地测试一下。
看日志是 TTS server 端压根没收到来自小爱音箱相关的 tts 请求,
检查你的小爱音箱配网的wifi是否跟你的 tts server 端在同一局域网环境下。
意思是说不但需要mi-gpt服务端需要能够访问到tts服务,还需要小爱音箱也能访问到tts服务?
TTS 服务主要是提供给小爱音箱去访问的,即 MiGPT 通过下发播放音频 URL 的方式,让小爱音箱去加载 TTS Server 上的资源(即 /tts.mp3 接口)来实时合成音频数据。另外一个接口 /speakers 则是提供给 MiGPT,让其在收到切换音色指令时,可以索引到对应的音色标识。
TTS 服务主要是提供给小爱音箱去访问的,即 MiGPT 通过下发播放音频 URL 的方式,让小爱音箱去加载 TTS Server 上的资源(即 /tts.mp3 接口)来实时合成音频数据。另外一个接口 /speakers 则是提供给 MiGPT,让其在收到切换音色指令时,可以索引到对应的音色标识。
明白了,多谢,这样还是暴露到公网比较方便,音箱可以自由移动,换网。
@DavinciEvans 麻烦贴一下你的 TTS Server 端的日志看下原因,或者在我微信公众号后台私发一下你的 TTS 公网地址,我本地测试一下。
我的也是小爱音箱 pro,TTS 我部署在家里的开发服务器上穿透出去,在国内也是可以访问的。tts 服务的日志除了启动和我自己手动调用的之外似乎没有其他日志了
TTS 地址已在微信公号后台私发了
顺便还有个问题,就是如果 tts 服务如果请求失败或者格式出错,服务会自动关闭
@DavinciEvans 好的收到,下个版本我处理下异常捕获。
@DavinciEvans 感觉是你的内网穿透服务对原始请求的返回 headers 做了手脚,缺少下面红框部分的原始 header:
@DavinciEvans 感觉是你的内网穿透服务对原始请求的返回 headers 做了手脚,缺少下面红框部分的原始 header:
了解了,那之后我放到公网服务器上再试试看
我的是小米AI音箱:
部署在本地,网页访问可以文字转语音 但是在MI-GPT中调用没有反应 甚至都没有:正在切换音色...可能我的不支持? 语音提示这个版本不支持语音切换音色
局域网 调用,tts运行在群晖,默认音色为BV002
调用日志: 2024/06/21 22:25:07 | stdout | 🔥 /api//tts.mp3?speaker=undefined+text=我说完了,请接着说!
2024/06/21 22:25:07 | stdout | 🔥 /api//tts.mp3?speaker=undefined+text=我说完了,请接着说!
音色为未设置,这个对吗
音色为未设置,这个对吗
正常的,TTS 内部会自动 fallback 到你设置的默认音色。
部署在本地,网页访问可以文字转语音,但是在MI-GPT中调用没有反应
这种情况有两种可能:
如果你的 TTS 服务控制台能收到 MiGPT 的 TTS 请求,说明 2 的可能性比较大;如果没有收到任何请求,说明是第一种可能。
小艾联网有什么特殊要求吗?的确他没连上局域网的
在tts的日志中,看到了小爱调用tts,但是没有感觉是tts没有把信息返回给小爱
没理解你的意思。小爱音箱配网的时候,连接到你当前正在使用的 Wi-Fi 就好了,跟你跑 TTS 服务的设备在同一个局域网即可。
在tts的日志中,看到了小爱调用tts,但是没有感觉是tts没有把信息返回给小爱
那有可能是响应头被丢掉了,或者你的设备使用那两个响应头不足以播放音频(存在这种可能性)。
你的设备型号和固件版本发一下看看。
小爱音响pro,版本是1.88.51稳定吧:
我部署的是docker的tts,发现:如果用电脑调用TTS,成功会会提示Done,如果是小爱,就是显示2变调用,没有done,小爱没声音 小爱调用的 2024/06/21 23:35:02,stdout,🔥 /api//tts.mp3?speaker=undefined+text=你好,我是雨果
2024/06/21 23:35:02,stdout,🔥 /api//tts.mp3?speaker=undefined+text=你好,我是雨果
下面是电脑调用的 2024/06/21 23:33:48,stdout,651d4a9a ✅ Done: [33m26880[39m
2024/06/21 23:33:48,stdout,🔥 /api/tts.mp3?speaker=BV201_streaming&text=很高兴认识你
小爱显示 2 遍调用
应该是小爱音箱的重试机制,音频链接没有反应会继续重试几次。
小爱音响pro,版本是1.88.51稳定吧
有点奇怪,因为我和你的音箱型号和固件是一样的,我这边局域网能正常播放的。
首先肯定的是,小爱访问到了tts服务器,然后没有得到回应?对不?
可以确认小爱访问到了tts服务器。
然后没有得到回应
贴上你的完整日志。理论上这种 case 不会出现,除非客户端在开始/完成响应前自己主动断开连接。
stdout: 2024/06/21 16:05:12 Speaker ✅ 服务已启动... stdout: 2024/06/21 16:05:15 Speaker 🔥 进入雨果 stdout: 2024/06/21 16:05:15 Speaker 🔊 你好,我是雨果 stdout: 2024/06/21 16:05:49 Speaker 🔊 正在离开雨果 stderr: npm error path /app stderr: npm error command failed stderr: npm error signal SIGTERM stderr: npm error command sh -c node ./app.js stderr: stderr: npm error A complete log of this run can be found in: /root/.npm/_logs/2024-06-21T16_05_07_552Z-debug-0.log stdout: stdout: > mi-gpt@4.0.0 start stdout: > node ./app.js
我的是在openwrt上部署的,能看到的日志,就这些
@binghan2000 多谢补充的日志,不过这些日志还不足以定位问题原因,有空可以联系下我联调一下。
什么时候方便?
我后面遇到同样问题,估计是音响型号有关系,我的是L05B,我自己内网测试tts都没问题,但是就是调用会报unWakeUp,mi-gpt-tts那边没有请求 2024/07/01 16:13:40 Speaker 设备信息: { "name": "小爱音箱Play", "desc": "设备在线 ", "model": "xiaomi.wifispeaker.l05b", "rom": "1.0.2" } 2024/07/01 16:13:40 Speaker ✅ 服务已启动... 2024/07/01 16:13:47 Speaker 你是谁 2024/07/01 16:13:48 Speaker 让我先想想 2024/07/01 16:13:48 Speaker unWakeUp 2024/07/01 16:13:56 Open AI ✅ Answer: 我是ChatGPT,一个基于人工智能的语言模型,能够回答各种问题和进行对话。有什么我可以帮助你的吗? 2024/07/01 16:13:56 Speaker unWakeUp 2024/07/01 16:13:56 Speaker 我是ChatGPT,一个基于人工智能的语言模型,能够回答各种问题和进行对话。有什么我可以帮助你的吗? 2024/07/01 16:13:56 Speaker unWakeUp
我的是小爱pro,mi-gpt和tts都部署在阿里云服务器上,电脑和小爱连的同一个网,手动在电脑上访问/api/tts.mp3正常,但是小爱就是运行不了显示请求失败这怎么搞?
@muzixing666 你的 TTS_BASE_URL
应该没携带 SECRET_PATH
,请按 mi-gpt-tts 最新文档中的说明设置你的 SECRET_PATH
设置了而且也填了
@muzixing666 我本地用 LHX123-
作为 SECRET_PATH
可正常访问,无法复现。
打开 debug 检查你的 mi-gpt 内的 TTS_BASE_URL
环境变量和你填写的是否一致,
有且只有可能是你实际的环境变量不正确。
@muzixing666 我本地用
LHX123-
作为SECRET_PATH
可正常访问,无法复现。打开 debug 检查你的 mi-gpt 内的
TTS_BASE_URL
环境变量和你填写的是否一致,有且只有可能是你实际的环境变量不正确。
谢谢我再检查检查
@muzixing666 我本地用
LHX123-
作为SECRET_PATH
可正常访问,无法复现。打开 debug 检查你的 mi-gpt 内的
TTS_BASE_URL
环境变量和你填写的是否一致,有且只有可能是你实际的环境变量不正确。
成了成了感谢大佬
同时使用 docker 部署了 mi-gpt 和 mi-gpt-tts,两个服务都正常启动了,使用 xiaoai 音色时能够正确地回复, mi-gpt-tts 的端口已经放到了公网上并且可以访问(手动调用 /api/tts.mp3 能正常工作)。也已经根据教程,修改了
TTS_BASE_URL
。可是在运行过程中,如果把 .migpt.js 中的 tts 改成了
custom
后,控制台当中能看到回复文本。可小爱音箱没有把回复的声音播放出来,在 mi-gpt-tts 当中也没有看到 api 接口的调用日志。下面是部分配置:
.env:
.migpt.js:
执行截图: