From 890fe53221c2d16b612849e5d5b1c2f8929330cd Mon Sep 17 00:00:00 2001 From: EnemyWind Date: Sat, 25 Apr 2026 20:41:13 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=B0=86Minimax=20TTS=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E8=BE=93=E5=87=BA=E6=A0=BC=E5=BC=8F=E6=94=B9=E4=B8=BA?= =?UTF-8?q?wav=E4=BB=A5=E8=A7=A3=E5=86=B3RIFF=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 问题 在 QQ 官方平台插件中,处理来自 Minimax TTS 的语音时,会抛出错误:`处理语音时出错: file does not start with RIFF id`。 ## 原因 Minimax TTS 提供商 (`minimax_tts_api_source.py`) 默认配置的音频输出格式为 `mp3`,而 `qqofficial_message_event.py` 中的 `wav_to_tencent_silk` 函数要求输入为 WAV 格式(具有 RIFF 文件头)。 ## 解决方案 将 `minimax_tts_api_source.py` 文件中 `ProviderMiniMaxTTSAPI` 类的 `audio_setting` 字典的 `format` 键值,从 `"mp3"` 修改为 `"wav"`。 ## 结果 修改后,Minimax TTS 生成的音频文件将直接为 WAV 格式,从而被下游函数正确识别和处理,修复上述错误。 --- astrbot/core/provider/sources/minimax_tts_api_source.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/astrbot/core/provider/sources/minimax_tts_api_source.py b/astrbot/core/provider/sources/minimax_tts_api_source.py index f40cb968ab..7ca3697088 100644 --- a/astrbot/core/provider/sources/minimax_tts_api_source.py +++ b/astrbot/core/provider/sources/minimax_tts_api_source.py @@ -65,7 +65,7 @@ def __init__( self.audio_setting: dict = { "sample_rate": 32000, "bitrate": 128000, - "format": "mp3", + "format": "wav", } self.concat_base_url: str = f"{self.api_base}?GroupId={self.group_id}" @@ -147,7 +147,7 @@ async def _audio_play(self, audio_stream: AsyncIterator[str]) -> bytes: async def get_audio(self, text: str) -> str: temp_dir = get_astrbot_temp_path() os.makedirs(temp_dir, exist_ok=True) - path = os.path.join(temp_dir, f"minimax_tts_api_{uuid.uuid4()}.mp3") + path = os.path.join(temp_dir, f"minimax_tts_api_{uuid.uuid4()}.wav") try: # 直接将异步生成器传递给 _audio_play 方法