yihong0618 / xiaogpt

Play ChatGPT and other LLM with Xiaomi AI Speaker
MIT License
5.9k stars 820 forks source link

LX06 小爱音箱pro 使用tts:openai tts_voice: alloy 不播放声音 #407

Closed chaoqunxie closed 2 months ago

chaoqunxie commented 6 months ago

使用tts:mi tts_voice: zh-CN-XiaoxiaoNeural 可以

yihong0618 commented 6 months ago

使用 openai 试试

chaoqunxie commented 6 months ago

使用 openai 试试

本地docker部署 本地服务器和小爱音箱不在一个局域网,音箱不回答gpt返回的结果,如果第二次再问,日志不打印gpt的回答

镜像版本 yihong0618/xiaogpt latest 8e380b6b5b44 3 days ago 333MB

启动命令 docker run -d --restart=always --name=xiaogpt-pro -v /mnt/xj4t1/docker/data/xiaogpt-pro/config:/config -p 9527:9527 -e XIAOGPT_HOSTNAME=192.168.100.33 yihong0618/xiaogpt --config=/config/config.json

配置文件

{ "hardware": "LX06", "account": "18xxxx", "password": "xxxxx", "openai_key": "sk-zzxxxxxxxx", "cookie": "", "mi_did": "789898989", "use_command": true, "mute_xiaoai": true, "verbose": false, "bot": "chatgptapi", "tts": "openai", "tts_voice":"alloy", "keyword": ["帮我", "请回答"], "start_conversation": "开始持续对话", "end_conversation": "结束持续对话", "stream": false, "gpt_options": {}, "api_base": "http://111/v1" }

日志

[12/22/23 12:23:57] INFO Serving on 192.168.100.33:9527 base.py:145 Running xiaogpt now, 用帮我/请回答开头来提问 或用开始持续对话开始持续对话

问题: 准备一下Java程序员的面试宝典? 以下是小爱的回答:
这个小爱还在学习呢,不如你问我,你会做什么,先了解一下我的功能吧 以下是 ChatGPT 的回答: Java程序员面试宝典:熟练掌握Java核心概念、多线程、集合框架;理解JVM、G C原理;熟悉Spring、Hibernate、MyBatis等框架;熟练使用设计模 式;掌握数据库操作、SQL优化;了解分布式、微服务架构;具备常用算法和数据结构知识 ;对前端基础有一定了解;能解决实际问题、具备良好的沟通能力和团队协作精神。

chaoqunxie commented 6 months ago

使用 openai 试试

大佬这个是啥意思 怎么配置

yihong0618 commented 6 months ago

不在一个局域网不行的,原理是起一个局域网 server 读 mp3

chaoqunxie commented 6 months ago

不在一个局域网不行的,原理是起一个局域网 server 读 mp3

这个mp3是服务器阅读 是不是需要把服务器的蓝牙连接到小爱音箱 让小爱去读?

yihong0618 commented 6 months ago

不需要一个局域网就行

chaoqunxie commented 6 months ago

不在一个局域网不行的,原理是起一个局域网 server 读 mp3

我有多个音箱 启动多个docker 9527端口被占用能更换么

yihong0618 commented 6 months ago

不在一个局域网不行的,原理是起一个局域网 server 读 mp3

我有多个音箱 启动多个docker 9527端口被占用能更换么

牛逼啊,可以但需要些 hack

chaoqunxie commented 6 months ago

不在一个局域网不行的,原理是起一个局域网 server 读 mp3

我有多个音箱 启动多个docker 9527端口被占用能更换么

牛逼啊,可以但需要些 hack

坐等大佬添加feature

chaoqunxie commented 6 months ago

不需要一个局域网就行

我测试了 在同一局域网还是一样的

chaoqunxie commented 6 months ago

不需要一个局域网就行

我测试了 在同一局域网还是一样的

L15A 用的这个型号 小米二代ai音箱

chaoqunxie commented 6 months ago

不需要一个局域网就行

chaoqunxie commented 6 months ago

不需要一个局域网就行

我是使用的docker 宿主机没有蓝牙 是不是需要在宿主机上安装蓝牙以及驱动并且启动蓝牙 然后将蓝牙设备共享给docker容器才可以 晚点我尝试下

yihong0618 commented 6 months ago

不需要一个局域网就行

我是使用的docker 宿主机没有蓝牙 是不是需要在宿主机上安装蓝牙以及驱动并且启动蓝牙 然后将蓝牙设备共享给docker容器才可以 晚点我尝试下

谢谢,我这几天有些其它事情抱歉哈,暂时没精力看这个

chaoqunxie commented 6 months ago

不需要一个局域网就行

我是使用的docker 宿主机没有蓝牙 是不是需要在宿主机上安装蓝牙以及驱动并且启动蓝牙 然后将蓝牙设备共享给docker容器才可以 晚点我尝试下

谢谢,我这几天有些其它事情抱歉哈,暂时没精力看这个

使用windows 直接git clone 运行 发现报错 [12/26/23 21:05:51] INFO Serving on 192.168.100.35:8084 base.py:145 Running xiaogpt now, 用帮我/请回答开头来提问 或用开始持续对话开始持续对话

问题: 今年的热点事件是什么? 以下是小爱的回答: 好啊,马上为你播放 以下是 ChatGPT 的回答: 截至我2022年知识截止日期,我无法提供2023年的最新信息。如果有关2023年的热点事件的查询,请参考最新的新闻报道或其他可靠的信息来源。我将尽力回答您的问题,只要它在我的知识截止日期之前 。 Traceback (most recent call last): File "C:\Users\chaoqunxie\xiaogpt\xiaogpt.py", line 5, in main() File "C:\Users\chaoqunxie\xiaogpt\xiaogpt\cli.py", line 171, in main loop.run_until_complete(miboy.run_forever()) File "C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 636, in run_until_complete self.run_forever() File "C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 321, in run_forever super().run_forever() File "C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 603, in run_forever self._run_once() File "C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1863, in _run_once event_list = self._selector.select(timeout) File "C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 439, in select self._poll(timeout) File "C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 788, in _poll status = _overlapped.GetQueuedCompletionStatus(self._iocp, ms) KeyboardInterrupt Task exception was never retrieved future: <Task finished name='Task-92' coro=<AudioFileTTS.synthesize..worker() done, defined at C:\Users\chaoqunxie\xiaogpt\xiaogpt\tts\base.py:101> exception=ValueError("Invalid voice 'alloy'.")> Traceback (most recent call last): File "C:\Users\chaoqunxie\xiaogpt\xiaogpt\tts\base.py", line 103, in worker path, duration = await self.make_audio_file(query, text) File "C:\Users\chaoqunxie\xiaogpt\xiaogpt\tts\edge.py", line 20, in make_audio_file communicate = edge_tts.Communicate(text, voice, proxy=self.config.proxy) File "C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\site-packages\edge_tts\communicate.py", line 279, in init raise ValueError(f"Invalid voice '{voice}'.") ValueError: Invalid voice 'alloy'. Exception ignored in: <coroutine object MiGPT.run_forever at 0x0000018A39161460> RuntimeError: coroutine ignored GeneratorExit Task was destroyed but it is pending! task: <Task pending name='Task-7' coro=<MiGPT.poll_latest_ask() running at C:\Users\chaoqunxie\xiaogpt\xiaogpt\xiaogpt.py:65> wait_for=> Exception ignored in: <coroutine object MiGPT.poll_latest_ask at 0x0000018A391614D0> RuntimeError: coroutine ignored GeneratorExit Task was destroyed but it is pending! task: <Task pending name='Task-93' coro=<Queue.get() running at C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\queues.py:159> wait_for=> Task was destroyed but it is pending! task: <Task pending name='Task-94' coro=<Event.wait() running at C:\Users\chaoqunxie\AppData\Local\Programs\Python\Python310\lib\asyncio\locks.py:214> wait_for=>

hymnlongworker commented 5 months ago

请问你有发现原因是什么吗?我遇到跟你类似的问题,因为Mi语音有些内容说违规不能播放,想改成edge的,配置文件修改为"tts": "edge", "tts_voice": "zh-CN-XiaoxiaoNeural",也是没有声音,但是控制台有回答,不过第二次问是有文字的。我试过调整不同参数,只有"tts": "mi"是能正常工作的

yihong0618 commented 5 months ago

什么型号?

hymnlongworker commented 5 months ago

型号是"LX06",我今天又试了下,"tts": "edge", "tts_voice": "zh-CN-XiaoxiaoNeural",偶尔能正常工作的,如果切换到旁路由代理能稳定工作,"tts": "openai","tts_voice": "alloy",还没有成功过 配置文件是 { "hardware": "LX06", "account": "xx", "password": "chatxxx", "openai_key": "ak-xxd", "mi_did": "70xxx", "use_command": false, "mute_xiaoai": true, "verbose": false, "bot": "chatgptapi", "tts": "openai", "tts_voice": "alloy", "edge_tts_voice": "zh-CN-XiaoxiaoNeural", "prompt": "回答前请安静得思考,精简回答,100字以内", "keyword": ["请"], "change_prompt_keyword": ["更改提示词"], "start_conversation": "持续对话", "end_conversation": "结束持续对话", "stream": true, "gpt_options": { "model": "gpt-4-1106-preview" }, "api_base": "https://axx", } docker run -d --restart=always -v D:\it\project\xiaogpt:/config -p 9527:9527 -e XIAOGPT_HOSTNAME=192.168.1.3 yihong0618/xiaogpt --config=/config/xiao_config.json 根本原因还是网络问题吗?

hz109919 commented 3 months ago

型号是"LX06",我今天又试了下,"tts": "edge", "tts_voice": "zh-CN-XiaoxiaoNeural",偶尔能正常工作的,如果切换到旁路由代理能稳定工作,"tts": "openai","tts_voice": "alloy",还没有成功过 配置文件是 { "hardware": "LX06", "account": "xx", "password": "chatxxx", "openai_key": "ak-xxd", "mi_did": "70xxx", "use_command": false, "mute_xiaoai": true, "verbose": false, "bot": "chatgptapi", "tts": "openai", "tts_voice": "alloy", "edge_tts_voice": "zh-CN-XiaoxiaoNeural", "prompt": "回答前请安静得思考,精简回答,100字以内", "keyword": ["请"], "change_prompt_keyword": ["更改提示词"], "start_conversation": "持续对话", "end_conversation": "结束持续对话", "stream": true, "gpt_options": { "model": "gpt-4-1106-preview" }, "api_base": "https://axx", } docker run -d --restart=always -v D:\it\project\xiaogpt:/config -p 9527:9527 -e XIAOGPT_HOSTNAME=192.168.1.3 yihong0618/xiaogpt --config=/config/xiao_config.json 根本原因还是网络问题吗?

我也是同样的问题,请问解决了吗

hz109919 commented 3 months ago

另外想请教一下,除了edge和openai的tts,能用自定义的声音回答吗

yihong0618 commented 3 months ago

型号是"LX06",我今天又试了下,"tts": "edge", "tts_voice": "zh-CN-XiaoxiaoNeural",偶尔能正常工作的,如果切换到旁路由代理能稳定工作,"tts": "openai","tts_voice": "alloy",还没有成功过 配置文件是 { "hardware": "LX06", "account": "xx", "password": "chatxxx", "openai_key": "ak-xxd", "mi_did": "70xxx", "use_command": false, "mute_xiaoai": true, "verbose": false, "bot": "chatgptapi", "tts": "openai", "tts_voice": "alloy", "edge_tts_voice": "zh-CN-XiaoxiaoNeural", "prompt": "回答前请安静得思考,精简回答,100字以内", "keyword": ["请"], "change_prompt_keyword": ["更改提示词"], "start_conversation": "持续对话", "end_conversation": "结束持续对话", "stream": true, "gpt_options": { "model": "gpt-4-1106-preview" }, "api_base": "https://axx", } docker run -d --restart=always -v D:\it\project\xiaogpt:/config -p 9527:9527 -e XIAOGPT_HOSTNAME=192.168.1.3 yihong0618/xiaogpt --config=/config/xiao_config.json 根本原因还是网络问题吗?

我也是同样的问题,请问解决了吗

不是同一网络只能用 xiaoai 本身的 tts

yihong0618 commented 3 months ago

另外想请教一下,除了edge和openai的tts,能用自定义的声音回答吗

可以,但我们还没加这个功能,你想用哪个项目的自定义声音

hz109919 commented 3 months ago

另外想请教一下,除了edge和openai的tts,能用自定义的声音回答吗

可以,但我们还没加这个功能,你想用哪个项目的自定义声音

想用自己训练的声音,是否很难。另外请问大神,唤醒词“小爱同学”是否不能更改

yihong0618 commented 3 months ago

另外想请教一下,除了edge和openai的tts,能用自定义的声音回答吗

可以,但我们还没加这个功能,你想用哪个项目的自定义声音

想用自己训练的声音,是否很难。另外请问大神,唤醒词“小爱同学”是否不能更改

不难,你训练的声音有 api 就行 理论能,但是非常费劲,不建议你这么做。

yihong0618 commented 2 months ago

done