Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

接入 Mi-GPT-TTS 后,没有调用 TTS 的接口也没有声音回复 #107

Closed
DavinciEvans opened this issue Jun 19, 2024 · 40 comments
Closed

Comments

@DavinciEvans
Copy link

同时使用 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:

OPENAI_MODEL=gpt-4o
OPENAI_API_KEY=sk-xxxxx
OPENAI_BASE_URL=https://api.openai.com/v1

TTS_DEFAULT_SPEAKER=BV002_streaming
VOLCANO_TTS_APP_ID=1********
VOLCANO_TTS_ACCESS_TOKEN=***********
#VOLCANO_TTS_USER_ID=火山引擎账号 ID(可选)

TTS_BASE_URL=http://**********/api

.migpt.js:

/**
     * 🔊 TTS 引擎
     */

    // TTS 引擎
    tts: 'custom',
    // 切换 TTS 引擎发言人音色关键词,只有配置了第三方 TTS 引擎时才有效
    // switchSpeakerKeywords: ["把声音换成"], // 以此关键词开头即可切换音色,比如:把声音换成东北老铁

执行截图:

Snipaste_2024-06-19_14-41-11

@idootop
Copy link
Owner

idootop commented Jun 19, 2024

@DavinciEvans 感谢提供的详细日志,从日志中我已经大概知道问题出在哪里了,下个版本会尝试修复。

@idootop
Copy link
Owner

idootop commented Jun 19, 2024

你的小爱音箱型号是多少?感觉是跟机型有关,我无法在小爱音箱 Pro 上复现这个问题,

需要等我身边有相关机型配合测试,才能尝试进行相关的测试和问题定位。

@econwang
Copy link

我的是小爱音箱 Pro,也是同样的问题,mi-gpt的log文件一切正常,但是没有声音回复,tts的log也是显示没有调用,但是切换音色的指令在tts的log中显示有调用,但是不能确认是否正确切换。

@idootop
Copy link
Owner

idootop commented Jun 19, 2024

@econwang 那就奇怪了,我能想到的原因只有一个,那就是你们配置的TTS _BASE_URL 在小爱音箱上访问异常。

造成无法访问可能的原因有:

  1. 如果你的TTS服务是跑在海外服务器上,检查国内网络环境下是否能够正常访问
  2. 如果你的TTS是跑在同小爱音箱相同的局域网下,检查在局域网中能够正常访问

@econwang
Copy link

TTS 是在同样的局域网下,手动调用 /api/tts.mp3 能正常工作

@idootop
Copy link
Owner

idootop commented Jun 20, 2024

很神奇,咱俩一样的型号,而且我也是局域网,我这边一切正常,复现不出来。

你贴一下 tts 项目的输出日志看下,还有migpt 打开 debug 看下切换音色时的日志。

@econwang
Copy link

企业微信截图_17188508232569

tts的日志
企业微信截图_17188510429911

@idootop
Copy link
Owner

idootop commented Jun 20, 2024

看日志是 TTS server 端压根没收到来自小爱音箱相关的 tts 请求,

检查你的小爱音箱配网的wifi是否跟你的 tts server 端在同一局域网环境下。

@idootop
Copy link
Owner

idootop commented Jun 20, 2024

@DavinciEvans 麻烦贴一下你的 TTS Server 端的日志看下原因,或者在我微信公众号后台私发一下你的 TTS 公网地址,我本地测试一下。

@econwang
Copy link

看日志是 TTS server 端压根没收到来自小爱音箱相关的 tts 请求,

检查你的小爱音箱配网的wifi是否跟你的 tts server 端在同一局域网环境下。

意思是说不但需要mi-gpt服务端需要能够访问到tts服务,还需要小爱音箱也能访问到tts服务?

@idootop
Copy link
Owner

idootop commented Jun 20, 2024

TTS 服务主要是提供给小爱音箱去访问的,即 MiGPT 通过下发播放音频 URL 的方式,让小爱音箱去加载 TTS Server 上的资源(即 /tts.mp3 接口)来实时合成音频数据。另外一个接口 /speakers 则是提供给 MiGPT,让其在收到切换音色指令时,可以索引到对应的音色标识。

@econwang
Copy link

TTS 服务主要是提供给小爱音箱去访问的,即 MiGPT 通过下发播放音频 URL 的方式,让小爱音箱去加载 TTS Server 上的资源(即 /tts.mp3 接口)来实时合成音频数据。另外一个接口 /speakers 则是提供给 MiGPT,让其在收到切换音色指令时,可以索引到对应的音色标识。

明白了,多谢,这样还是暴露到公网比较方便,音箱可以自由移动,换网。

@DavinciEvans
Copy link
Author

@DavinciEvans 麻烦贴一下你的 TTS Server 端的日志看下原因,或者在我微信公众号后台私发一下你的 TTS 公网地址,我本地测试一下。

我的也是小爱音箱 pro,TTS 我部署在家里的开发服务器上穿透出去,在国内也是可以访问的。tts 服务的日志除了启动和我自己手动调用的之外似乎没有其他日志了

TTS 地址已在微信公号后台私发了

顺便还有个问题,就是如果 tts 服务如果请求失败或者格式出错,服务会自动关闭

Snipaste_2024-06-20_14-00-40

@idootop
Copy link
Owner

idootop commented Jun 20, 2024

@DavinciEvans 好的收到,下个版本我处理下异常捕获。

@idootop
Copy link
Owner

idootop commented Jun 20, 2024

@DavinciEvans 感觉是你的内网穿透服务对原始请求的返回 headers 做了手脚,缺少下面红框部分的原始 header:

image

@DavinciEvans
Copy link
Author

@DavinciEvans 感觉是你的内网穿透服务对原始请求的返回 headers 做了手脚,缺少下面红框部分的原始 header:

image

了解了,那之后我放到公网服务器上再试试看

@momoq
Copy link

momoq commented Jun 21, 2024

我的是小米AI音箱:

部署在本地,网页访问可以文字转语音
image
但是在MI-GPT中调用没有反应
image
甚至都没有:正在切换音色...可能我的不支持?
语音提示这个版本不支持语音切换音色

@binghan2000
Copy link

局域网 调用,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=我说完了,请接着说!

音色为未设置,这个对吗

@idootop
Copy link
Owner

idootop commented Jun 21, 2024

音色为未设置,这个对吗

正常的,TTS 内部会自动 fallback 到你设置的默认音色。

@idootop
Copy link
Owner

idootop commented Jun 21, 2024

部署在本地,网页访问可以文字转语音,但是在MI-GPT中调用没有反应

这种情况有两种可能:

  1. 你的小爱音箱连接到的 Wi-Fi 网络无法正常访问你的 TTS 服务接口
  2. 假如你使用了内外穿透或者反向代理等服务,你的 TTS 服务接口返回的 headers 可能会被修改,丢掉了某些关键 headers

如果你的 TTS 服务控制台能收到 MiGPT 的 TTS 请求,说明 2 的可能性比较大;如果没有收到任何请求,说明是第一种可能。

@binghan2000
Copy link

小艾联网有什么特殊要求吗?的确他没连上局域网的

@binghan2000
Copy link

在tts的日志中,看到了小爱调用tts,但是没有感觉是tts没有把信息返回给小爱

@idootop
Copy link
Owner

idootop commented Jun 21, 2024

没理解你的意思。小爱音箱配网的时候,连接到你当前正在使用的 Wi-Fi 就好了,跟你跑 TTS 服务的设备在同一个局域网即可。

@idootop
Copy link
Owner

idootop commented Jun 21, 2024

在tts的日志中,看到了小爱调用tts,但是没有感觉是tts没有把信息返回给小爱

那有可能是响应头被丢掉了,或者你的设备使用那两个响应头不足以播放音频(存在这种可能性)。

你的设备型号和固件版本发一下看看。

@binghan2000
Copy link

小爱音响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=很高兴认识你

@idootop
Copy link
Owner

idootop commented Jun 21, 2024

小爱显示 2 遍调用

应该是小爱音箱的重试机制,音频链接没有反应会继续重试几次。

小爱音响pro,版本是1.88.51稳定吧

有点奇怪,因为我和你的音箱型号和固件是一样的,我这边局域网能正常播放的。

@binghan2000
Copy link

首先肯定的是,小爱访问到了tts服务器,然后没有得到回应?对不?

@idootop
Copy link
Owner

idootop commented Jun 21, 2024

可以确认小爱访问到了tts服务器。

然后没有得到回应

贴上你的完整日志。理论上这种 case 不会出现,除非客户端在开始/完成响应前自己主动断开连接。

@binghan2000
Copy link

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: > [email protected] start
stdout: > node ./app.js

我的是在openwrt上部署的,能看到的日志,就这些

@idootop
Copy link
Owner

idootop commented Jun 22, 2024

@binghan2000 多谢补充的日志,不过这些日志还不足以定位问题原因,有空可以联系下我联调一下。

@binghan2000
Copy link

什么时候方便?

@idootop
Copy link
Owner

idootop commented Jun 22, 2024

@binghan2000 你在电脑上下个腾讯会议,然后创建个会议把链接私发到我的微信公众号后台

Repository owner deleted a comment from binghan2000 Jun 22, 2024
@idootop idootop closed this as completed Jun 22, 2024
@hardy110
Copy link

hardy110 commented Jul 1, 2024

我后面遇到同样问题,估计是音响型号有关系,我的是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

@muzixing666
Copy link

1720417493734 1720417684625 我的是小爱pro,mi-gpt和tts都部署在阿里云服务器上,电脑和小爱连的同一个网,手动在电脑上访问/api/tts.mp3正常,但是小爱就是运行不了显示请求失败这怎么搞?

@idootop
Copy link
Owner

idootop commented Jul 8, 2024

@muzixing666 你的 TTS_BASE_URL 应该没携带 SECRET_PATH,请按 mi-gpt-tts 最新文档中的说明设置你的 SECRET_PATH

image

@muzixing666
Copy link

1720418879282 1720418997231 设置了而且也填了

@idootop
Copy link
Owner

idootop commented Jul 8, 2024

@muzixing666 我本地用 LHX123- 作为 SECRET_PATH 可正常访问,无法复现。

打开 debug 检查你的 mi-gpt 内的 TTS_BASE_URL 环境变量和你填写的是否一致,

有且只有可能是你实际的环境变量不正确。

@muzixing666
Copy link

@muzixing666 我本地用 LHX123- 作为 SECRET_PATH 可正常访问,无法复现。

打开 debug 检查你的 mi-gpt 内的 TTS_BASE_URL 环境变量和你填写的是否一致,

有且只有可能是你实际的环境变量不正确。

谢谢我再检查检查

@muzixing666
Copy link

@muzixing666 我本地用 LHX123- 作为 SECRET_PATH 可正常访问,无法复现。

打开 debug 检查你的 mi-gpt 内的 TTS_BASE_URL 环境变量和你填写的是否一致,

有且只有可能是你实际的环境变量不正确。

成了成了感谢大佬

@yangmuyidexiatian
Copy link

调用tts接口了,但是没声音,一会就退出了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants