From dd881071311118c92a9c44a9c14bb8daeeca368d Mon Sep 17 00:00:00 2001 From: rainv123 <2148537152@qq.com> Date: Thu, 30 Apr 2026 15:57:03 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"fix:=20=E4=BF=AE=E5=A4=8D=E6=B5=81?= =?UTF-8?q?=E5=BC=8FTTS=E6=9B=BF=E6=8D=A2=E8=AF=8D=E6=98=BE=E7=A4=BA/?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E9=97=AE=E9=A2=98"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 8b847a38265644ddd43daaa9166b6802d910e3c2. --- .../core/providers/tts/alibl_stream.py | 2 -- .../core/providers/tts/aliyun_stream.py | 2 -- .../core/providers/tts/huoshan_double_stream.py | 13 ++++--------- .../core/providers/tts/index_stream.py | 6 +++--- main/xiaozhi-server/core/providers/tts/linkerai.py | 10 +++++----- .../core/providers/tts/minimax_httpstream.py | 6 +++--- .../core/providers/tts/xunfei_stream.py | 2 -- 7 files changed, 15 insertions(+), 26 deletions(-) diff --git a/main/xiaozhi-server/core/providers/tts/alibl_stream.py b/main/xiaozhi-server/core/providers/tts/alibl_stream.py index 7618cbbd..4ab30593 100644 --- a/main/xiaozhi-server/core/providers/tts/alibl_stream.py +++ b/main/xiaozhi-server/core/providers/tts/alibl_stream.py @@ -145,8 +145,6 @@ class TTSProvider(TTSProviderBase): elif ContentType.TEXT == message.content_type: if message.content_detail: try: - # 保存原始文本用于流式响应时显示/上报 - self.store_tts_text(self.conn.sentence_id, message.content_detail) logger.bind(tag=TAG).debug( f"开始发送TTS文本: {message.content_detail}" ) diff --git a/main/xiaozhi-server/core/providers/tts/aliyun_stream.py b/main/xiaozhi-server/core/providers/tts/aliyun_stream.py index 0479cd15..66a0df9c 100644 --- a/main/xiaozhi-server/core/providers/tts/aliyun_stream.py +++ b/main/xiaozhi-server/core/providers/tts/aliyun_stream.py @@ -251,8 +251,6 @@ class TTSProvider(TTSProviderBase): elif ContentType.TEXT == message.content_type: if message.content_detail: try: - # 保存原始文本用于流式响应时显示/上报 - self.store_tts_text(self.conn.sentence_id, message.content_detail) logger.bind(tag=TAG).debug( f"开始发送TTS文本: {message.content_detail}" ) diff --git a/main/xiaozhi-server/core/providers/tts/huoshan_double_stream.py b/main/xiaozhi-server/core/providers/tts/huoshan_double_stream.py index 4dbacda9..a6ecc21c 100644 --- a/main/xiaozhi-server/core/providers/tts/huoshan_double_stream.py +++ b/main/xiaozhi-server/core/providers/tts/huoshan_double_stream.py @@ -321,8 +321,6 @@ class TTSProvider(TTSProviderBase): elif ContentType.TEXT == message.content_type: if message.content_detail: try: - # 保存原始文本用于流式响应时显示/上报 - self.store_tts_text(self.conn.sentence_id, message.content_detail) logger.bind(tag=TAG).debug( f"开始发送TTS文本: {message.content_detail}" ) @@ -513,14 +511,11 @@ class TTSProvider(TTSProviderBase): logger.bind(tag=TAG).debug(f"释放服务端资源成功~~") self.activate_session = False elif not self.resource_type and res.optional.event == EVENT_TTSSentenceStart: - # 使用保存的原始文本用于显示/上报(而不是服务端返回的替换后文本) - tts_text = self.get_tts_text(self.conn.sentence_id) - if not tts_text: - json_data = json.loads(res.payload.decode("utf-8")) - tts_text = json_data.get("text", "") - logger.bind(tag=TAG).debug(f"句子语音生成开始: {tts_text}") + json_data = json.loads(res.payload.decode("utf-8")) + self.tts_text = json_data.get("text", "") + logger.bind(tag=TAG).debug(f"句子语音生成开始: {self.tts_text}") self.tts_audio_queue.put( - (SentenceType.FIRST, [], tts_text) + (SentenceType.FIRST, [], self.tts_text) ) elif ( res.optional.event == EVENT_TTSResponse diff --git a/main/xiaozhi-server/core/providers/tts/index_stream.py b/main/xiaozhi-server/core/providers/tts/index_stream.py index d1616874..7314ac9c 100644 --- a/main/xiaozhi-server/core/providers/tts/index_stream.py +++ b/main/xiaozhi-server/core/providers/tts/index_stream.py @@ -97,7 +97,7 @@ class TTSProvider(TTSProviderBase): if self._correct_words_pattern: text = self._correct_words_pattern.sub(lambda m: self.correct_words[m.group(0)], text) try: - asyncio.run(self.text_to_speak(text, original_text, is_last)) + asyncio.run(self.text_to_speak(text, is_last)) except Exception as e: logger.bind(tag=TAG).warning( f"语音生成失败{5 - max_repeat_time + 1}次: {original_text},错误: {e}" @@ -117,7 +117,7 @@ class TTSProvider(TTSProviderBase): finally: return None - async def text_to_speak(self, text, original_text, is_last): + async def text_to_speak(self, text, is_last): """流式处理TTS音频,每句只推送一次音频列表""" payload = {"text": text, "character": self.voice} @@ -140,7 +140,7 @@ class TTSProvider(TTSProviderBase): return self.pcm_buffer.clear() - self.tts_audio_queue.put((SentenceType.FIRST, [], original_text)) + self.tts_audio_queue.put((SentenceType.FIRST, [], text)) # 处理音频流数据 async for chunk in resp.content.iter_any(): diff --git a/main/xiaozhi-server/core/providers/tts/linkerai.py b/main/xiaozhi-server/core/providers/tts/linkerai.py index 145da1ae..ecfb8b38 100644 --- a/main/xiaozhi-server/core/providers/tts/linkerai.py +++ b/main/xiaozhi-server/core/providers/tts/linkerai.py @@ -89,7 +89,7 @@ class TTSProvider(TTSProviderBase): if self._correct_words_pattern: text = self._correct_words_pattern.sub(lambda m: self.correct_words[m.group(0)], text) try: - asyncio.run(self.text_to_speak(text, original_text, is_last)) + asyncio.run(self.text_to_speak(text, is_last)) except Exception as e: logger.bind(tag=TAG).warning( f"语音生成失败{5 - max_repeat_time + 1}次: {original_text},错误: {e}" @@ -109,9 +109,9 @@ class TTSProvider(TTSProviderBase): finally: return None - async def text_to_speak(self, text, original_text, is_last): + async def text_to_speak(self, text, is_last): """流式处理TTS音频,每句只推送一次音频列表""" - await self._tts_request(text, original_text, is_last) + await self._tts_request(text, is_last) async def close(self): """资源清理""" @@ -119,7 +119,7 @@ class TTSProvider(TTSProviderBase): if hasattr(self, "opus_encoder"): self.opus_encoder.close() - async def _tts_request(self, text: str, original_text: str, is_last: bool) -> None: + async def _tts_request(self, text: str, is_last: bool) -> None: params = { "tts_text": text, "spk_id": self.voice, @@ -157,7 +157,7 @@ class TTSProvider(TTSProviderBase): return self.pcm_buffer.clear() - self.tts_audio_queue.put((SentenceType.FIRST, [], original_text)) + self.tts_audio_queue.put((SentenceType.FIRST, [], text)) # 兼容 iter_chunked / iter_chunks / iter_any async for chunk in resp.content.iter_any(): diff --git a/main/xiaozhi-server/core/providers/tts/minimax_httpstream.py b/main/xiaozhi-server/core/providers/tts/minimax_httpstream.py index b6ad1a9d..f620adfb 100644 --- a/main/xiaozhi-server/core/providers/tts/minimax_httpstream.py +++ b/main/xiaozhi-server/core/providers/tts/minimax_httpstream.py @@ -153,7 +153,7 @@ class TTSProvider(TTSProviderBase): if self._correct_words_pattern: text = self._correct_words_pattern.sub(lambda m: self.correct_words[m.group(0)], text) try: - asyncio.run(self.text_to_speak(text, original_text, is_last)) + asyncio.run(self.text_to_speak(text, is_last)) except Exception as e: logger.bind(tag=TAG).warning( f"语音生成失败{5 - max_repeat_time + 1}次: {original_text},错误: {e}" @@ -173,7 +173,7 @@ class TTSProvider(TTSProviderBase): finally: return None - async def text_to_speak(self, text, original_text, is_last): + async def text_to_speak(self, text, is_last): """流式处理TTS音频,每句只推送一次音频列表""" payload = { "model": self.model, @@ -212,7 +212,7 @@ class TTSProvider(TTSProviderBase): return self.pcm_buffer.clear() - self.tts_audio_queue.put((SentenceType.FIRST, [], original_text)) + self.tts_audio_queue.put((SentenceType.FIRST, [], text)) # 处理音频流数据 buffer = b"" diff --git a/main/xiaozhi-server/core/providers/tts/xunfei_stream.py b/main/xiaozhi-server/core/providers/tts/xunfei_stream.py index 9baed36c..812c282b 100644 --- a/main/xiaozhi-server/core/providers/tts/xunfei_stream.py +++ b/main/xiaozhi-server/core/providers/tts/xunfei_stream.py @@ -197,8 +197,6 @@ class TTSProvider(TTSProviderBase): if ContentType.TEXT == message.content_type: if message.content_detail: try: - # 保存原始文本用于流式响应时显示/上报 - self.store_tts_text(self.conn.sentence_id, message.content_detail) logger.bind(tag=TAG).debug( f"开始发送TTS文本: {message.content_detail}" )