mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-26 09:03:54 +08:00
TTS文本过滤
This commit is contained in:
@@ -185,20 +185,21 @@ class TTSProvider(TTSProviderBase):
|
|||||||
# 过滤Markdown
|
# 过滤Markdown
|
||||||
filtered_text = MarkdownCleaner.clean_markdown(text)
|
filtered_text = MarkdownCleaner.clean_markdown(text)
|
||||||
|
|
||||||
# 发送continue-task消息
|
if filtered_text:
|
||||||
continue_task_message = {
|
# 发送continue-task消息
|
||||||
"header": {
|
continue_task_message = {
|
||||||
"action": "continue-task",
|
"header": {
|
||||||
"task_id": self.conn.sentence_id,
|
"action": "continue-task",
|
||||||
"streaming": "duplex",
|
"task_id": self.conn.sentence_id,
|
||||||
},
|
"streaming": "duplex",
|
||||||
"payload": {"input": {"text": filtered_text}},
|
},
|
||||||
}
|
"payload": {"input": {"text": filtered_text}},
|
||||||
|
}
|
||||||
await self.ws.send(json.dumps(continue_task_message))
|
|
||||||
self.last_active_time = time.time()
|
|
||||||
logger.bind(tag=TAG).debug(f"已发送文本: {filtered_text}")
|
|
||||||
|
|
||||||
|
await self.ws.send(json.dumps(continue_task_message))
|
||||||
|
self.last_active_time = time.time()
|
||||||
|
logger.bind(tag=TAG).debug(f"已发送文本: {filtered_text}")
|
||||||
|
return
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.bind(tag=TAG).error(f"发送TTS文本失败: {str(e)}")
|
logger.bind(tag=TAG).error(f"发送TTS文本失败: {str(e)}")
|
||||||
if self.ws:
|
if self.ws:
|
||||||
|
|||||||
@@ -288,18 +288,19 @@ class TTSProvider(TTSProviderBase):
|
|||||||
logger.bind(tag=TAG).warning(f"WebSocket连接不存在,终止发送文本")
|
logger.bind(tag=TAG).warning(f"WebSocket连接不存在,终止发送文本")
|
||||||
return
|
return
|
||||||
filtered_text = MarkdownCleaner.clean_markdown(text)
|
filtered_text = MarkdownCleaner.clean_markdown(text)
|
||||||
run_request = {
|
if filtered_text:
|
||||||
"header": {
|
run_request = {
|
||||||
"message_id": uuid.uuid4().hex,
|
"header": {
|
||||||
"task_id": self.task_id,
|
"message_id": uuid.uuid4().hex,
|
||||||
"namespace": "FlowingSpeechSynthesizer",
|
"task_id": self.task_id,
|
||||||
"name": "RunSynthesis",
|
"namespace": "FlowingSpeechSynthesizer",
|
||||||
"appkey": self.appkey,
|
"name": "RunSynthesis",
|
||||||
},
|
"appkey": self.appkey,
|
||||||
"payload": {"text": filtered_text},
|
},
|
||||||
}
|
"payload": {"text": filtered_text},
|
||||||
await self.ws.send(json.dumps(run_request))
|
}
|
||||||
self.last_active_time = time.time()
|
await self.ws.send(json.dumps(run_request))
|
||||||
|
self.last_active_time = time.time()
|
||||||
return
|
return
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ import json
|
|||||||
import queue
|
import queue
|
||||||
import asyncio
|
import asyncio
|
||||||
import traceback
|
import traceback
|
||||||
from typing import Callable, Any
|
|
||||||
import websockets
|
import websockets
|
||||||
|
|
||||||
|
from typing import Callable, Any
|
||||||
from core.utils.tts import MarkdownCleaner
|
from core.utils.tts import MarkdownCleaner
|
||||||
from config.logger import setup_logging
|
from config.logger import setup_logging
|
||||||
from core.utils import opus_encoder_utils
|
from core.utils import opus_encoder_utils
|
||||||
from core.utils.util import check_model_key
|
from core.utils.util import check_model_key
|
||||||
from core.providers.tts.base import TTSProviderBase
|
from core.providers.tts.base import TTSProviderBase
|
||||||
from core.providers.tts.dto.dto import SentenceType, ContentType, InterfaceType
|
from core.providers.tts.dto.dto import SentenceType, ContentType, InterfaceType
|
||||||
from asyncio import Task
|
|
||||||
|
|
||||||
|
|
||||||
TAG = __name__
|
TAG = __name__
|
||||||
@@ -340,8 +340,9 @@ class TTSProvider(TTSProviderBase):
|
|||||||
# 过滤Markdown
|
# 过滤Markdown
|
||||||
filtered_text = MarkdownCleaner.clean_markdown(text)
|
filtered_text = MarkdownCleaner.clean_markdown(text)
|
||||||
|
|
||||||
# 发送文本
|
if filtered_text:
|
||||||
await self.send_text(self.voice, filtered_text, self.conn.sentence_id)
|
# 发送文本
|
||||||
|
await self.send_text(self.voice, filtered_text, self.conn.sentence_id)
|
||||||
return
|
return
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.bind(tag=TAG).error(f"发送TTS文本失败: {str(e)}")
|
logger.bind(tag=TAG).error(f"发送TTS文本失败: {str(e)}")
|
||||||
|
|||||||
@@ -237,10 +237,10 @@ class TTSProvider(TTSProviderBase):
|
|||||||
return
|
return
|
||||||
|
|
||||||
filtered_text = MarkdownCleaner.clean_markdown(text)
|
filtered_text = MarkdownCleaner.clean_markdown(text)
|
||||||
|
if filtered_text:
|
||||||
# 发送文本合成请求
|
# 发送文本合成请求
|
||||||
run_request = self._build_base_request(status=1,text=filtered_text)
|
run_request = self._build_base_request(status=1,text=filtered_text)
|
||||||
await self.ws.send(json.dumps(run_request))
|
await self.ws.send(json.dumps(run_request))
|
||||||
return
|
return
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import json
|
|||||||
|
|
||||||
TAG = __name__
|
TAG = __name__
|
||||||
EMOJI_MAP = {
|
EMOJI_MAP = {
|
||||||
"😂": "laughing",
|
"😂": "funny",
|
||||||
"😭": "crying",
|
"😭": "crying",
|
||||||
"😠": "angry",
|
"😠": "angry",
|
||||||
"😔": "sad",
|
"😔": "sad",
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from config.logger import setup_logging
|
|
||||||
import importlib
|
import importlib
|
||||||
|
|
||||||
|
from config.logger import setup_logging
|
||||||
|
from core.utils.textUtils import check_emoji
|
||||||
|
|
||||||
logger = setup_logging()
|
logger = setup_logging()
|
||||||
|
|
||||||
punctuation_set = {
|
punctuation_set = {
|
||||||
@@ -135,4 +137,8 @@ class MarkdownCleaner:
|
|||||||
|
|
||||||
for regex, replacement in MarkdownCleaner.REGEXES:
|
for regex, replacement in MarkdownCleaner.REGEXES:
|
||||||
text = regex.sub(replacement, text)
|
text = regex.sub(replacement, text)
|
||||||
|
|
||||||
|
# 去除emoji表情
|
||||||
|
text = check_emoji(text)
|
||||||
|
|
||||||
return text.strip()
|
return text.strip()
|
||||||
Reference in New Issue
Block a user