yihong0618 / xiaogpt

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

小爱TTS正常,非小爱TTS不出声,临时目录生成的mp3文件长度为0 #517

Closed hcocoa closed 1 month ago

hcocoa commented 1 month ago

如题,tts:mi 的时候一切正常,但是换成edge、baidu等tts后没有声音,检查了临时目录,发现生成MP3文件长度为零。

同台电脑,直接cmd调用 edge-tts或者tetos都能正常生成音频文件。

配置文件如下:

# This is a YAML configuration file

# 小米设备型号,可在底部标签获得
hardware: L15A
# 小米账号
account: "xxx"
# 小米密码
password: "xxx"
# 小米账户 cookie (如果用上面密码登录可以不填)
cookie: ""
# 设备 DID,参考 https://github.com/yihong0618/MiService
mi_did: "xxx"
# 使用 MI command 与小爱交互
use_command: false
# 快速停掉小爱自己的回答
mute_xiaoai: true
# 是否打印详细日志
verbose: false
# HTTP 代理地址
proxy: ""

# ===== 对话 AI 设置 =====
# 使用的 bot 类型,目前支持 chatgptapi, glm, gemini, langchain, qwen, doubao, moonshot, yi, llama,
bot: chatgptapi
# 自定义 prompt
prompt: "你是一名风趣幽默的老师,擅长回答小朋友提出的问题,字数最大不超过300字"
# 触发词列表
keyword:
    - "请"
# 更改提示词触发列表
change_prompt_keyword:
    - "更改提示词"
# 开始持续对话关键词
start_conversation: "开始持续对话"
# 结束持续对话关键词
end_conversation: "结束持续对话"
# 使用流式响应,获得更快的响应
stream: true
# 传给 Chatbot completion 接口的参数,比如要使用自定义模型:
# gpt_options:
#   model: gpt-4o-2024-05-13
gpt_options:
  temperature: 1.0
  model: "deepseek-chat"

# ----- OpenAI -----
# OpenAI key
openai_key: "sk-xxx"
# OpenAI API 地址
# 例:OpenAI 代理地址: https://myopenai.com/v1/
# 或:Azure Open AI: https://abc.openai.azure.com/
api_base: "https://api.deepseek.com/v1"
# Azure Open AI 的 deployment id(如使用 Azure OpenAI)
#deployment_id: ""

# ----- Moonshot(Kimi) -----
# Kimi 的 API key: https://platform.moonshot.cn/docs/api/chat#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
moonshot_api_key: "sk-xxx"

# ----- Yi -----
# 零一万物的 API key: https://platform.lingyiwanwu.com/apikeys
yi_api_key: ""

# ----- Groq(Llama3) -----
# Groq API key: https://console.groq.com/docs/quickstart
llama_api_key: ""

# ----- SerpAPI(Bot 类型为 langchain 时需要) -----
# SerpAPI key: https://serpapi.com/
serpapi_api_key: ""

# ----- 智谱清言(ChatGLM) -----
# ChatGLM API key
glm_key: ""

# ----- Gemini -----
# Gemini key: https://makersuite.google.com/app/apikey
gemini_key: ""
# Gemini 自定义域名: https://github.com/antergone/palm-netlify-proxy
gemini_api_domain: ""

# ----- 通义千问(Qwen) -----
# Qwen API key: https://help.aliyun.com/zh/dashscope/developer-reference/api-details
qwen_key: ""

# ----- 火山(豆包)-----
# 火山引擎的 access key 和 secret key,参考 https://console.volcengine.com/iam/keymanage/
volc_access_key: ""
volc_secret_key: ""

# ===== 语音设置 =====
# 使用的 TTS 类型,目前支持 mi, edge, openai, azure, volc, baidu, google, minimax
tts: edge
# TTS 参数字典,参考 https://github.com/frostming/tetos 获取可用参数
tts_options:
#   api_key: xxx
#   secret_key: xxx
frostming commented 1 month ago

是不是voice不能读给定的文字?试试换voice

yihong0618 commented 1 month ago

是用docker 么我 edge 也出现过。我们查查

hcocoa commented 1 month ago

是不是voice不能读给定的文字?试试换voice

请问edge怎么换voice?就是因为不知道怎么换,所以我特地去注册了baidu,结果mp3还是0kb。

我看了一下console打印的输出,好像make_audio_file的参数lang一直都是en-US,但明明返回的是中文,不知道是不是这个问题?

https://github.com/yihong0618/xiaogpt/blob/82c57cc5290da905bf3379ff3c2adadabadf0251/xiaogpt/tts/tetos.py#L26

hcocoa commented 1 month ago

是用docker 么我 edge 也出现过。我们查查

windows和群晖的docker都试了,同样的问题,100%复现。

frostming commented 1 month ago

好像make_audio_file的参数lang一直都是en-US,但明明返回的是中文

lang的值是由LLM产生的,会打在terminal log里。有时LLM发神经会乱给lang值(比如豆包的表现很差,无法给出正确的值),这个目前没有解决,可能可以通过(非AI)的langdetect改善

voice在tts_options里指定即可

tts_options:
    voice: xxx
yihong0618 commented 1 month ago

好像make_audio_file的参数lang一直都是en-US,但明明返回的是中文

lang的值是由LLM产生的,会打在terminal log里。有时LLM发神经会乱给lang值(比如豆包的表现很差,无法给出正确的值),这个目前没有解决,可能可以通过(非AI)的langdetect改善

voice在tts_options里指定即可

tts_options:
    voice: xxx

非大模型。。。都是 AI....我们今天更新下。

yihong0618 commented 1 month ago

是用docker 么我 edge 也出现过。我们查查

windows和群晖的docker都试了,同样的问题,100%复现。

Azure 实验了么? docker 这个我复现过当时以为是我的问题。

hcocoa commented 1 month ago

是用docker 么我 edge 也出现过。我们查查

windows和群晖的docker都试了,同样的问题,100%复现。

Azure 实验了么? docker 这个我复现过当时以为是我的问题。

没有azure的账号……

yihong0618 commented 1 month ago

我来看看

yihong0618 commented 1 month ago

目前我 edge 正常无法复现。。。

hcocoa commented 1 month ago

目前我 edge 正常无法复现。。。

您是在option里加了voice吗?

tts_options:
    voice: xxx
yihong0618 commented 1 month ago

目前我 edge 正常无法复现。。。

您是在option里加了voice吗?

tts_options:
    voice: xxx

啥也没加,我一会儿加试试

hcocoa commented 1 month ago

好像make_audio_file的参数lang一直都是en-US,但明明返回的是中文

lang的值是由LLM产生的,会打在terminal log里。有时LLM发神经会乱给lang值(比如豆包的表现很差,无法给出正确的值),这个目前没有解决,可能可以通过(非AI)的langdetect改善

voice在tts_options里指定即可

tts_options:
    voice: xxx

2.84后edge tts正常了,谢谢!

另外请问一下,yaml配置里的触发词可以多个吗?如何分割呢?下面这样写可以吗?

keyword:
    - "请问","请"
yihong0618 commented 1 month ago

keyword:

yihong0618 commented 1 month ago

先关了哈