From 9ed66ec0137a0473f977088721d99ac0325d3ddd Mon Sep 17 00:00:00 2001 From: FAN-yeB <1442100690@qq.com> Date: Thu, 7 May 2026 10:54:03 +0800 Subject: [PATCH] =?UTF-8?q?update:TTS=5FACGNTTS=20=E6=B5=B7=E8=B1=9A?= =?UTF-8?q?=E9=85=8D=E9=9F=B3=E6=88=AA=E6=AD=A25=E6=9C=887=E6=97=A5?= =?UTF-8?q?=E6=9C=AA=E6=89=BE=E5=88=B0token=E5=85=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=85=88=E6=9A=82=E6=97=B6=E4=B8=8B=E6=9E=B6=E8=BF=99=E4=B8=AA?= =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/changelog/202605071037.sql | 5 + .../db/changelog/db.changelog-master.yaml | 7 ++ main/xiaozhi-server/config.yaml | 18 ---- .../core/providers/tts/ttson.py | 96 ------------------- 4 files changed, 12 insertions(+), 114 deletions(-) create mode 100644 main/manager-api/src/main/resources/db/changelog/202605071037.sql delete mode 100644 main/xiaozhi-server/core/providers/tts/ttson.py diff --git a/main/manager-api/src/main/resources/db/changelog/202605071037.sql b/main/manager-api/src/main/resources/db/changelog/202605071037.sql new file mode 100644 index 00000000..97586d77 --- /dev/null +++ b/main/manager-api/src/main/resources/db/changelog/202605071037.sql @@ -0,0 +1,5 @@ +-- 删除provider_code为ttson的供应器 +DELETE FROM `ai_model_provider` WHERE `provider_code` = 'ttson'; + +-- 删除model_code为ACGNTTS的配置 +DELETE FROM `ai_model_config` WHERE `model_code` = 'ACGNTTS'; diff --git a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml index d7967b21..ca9f7ca8 100755 --- a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml @@ -641,3 +641,10 @@ databaseChangeLog: - sqlFile: encoding: utf8 path: classpath:db/changelog/202604300930.sql + - changeSet: + id: 202605071037 + author: fyb + changes: + - sqlFile: + encoding: utf8 + path: classpath:db/changelog/202605071037.sql diff --git a/main/xiaozhi-server/config.yaml b/main/xiaozhi-server/config.yaml index e82d15f0..3d9b5c7b 100644 --- a/main/xiaozhi-server/config.yaml +++ b/main/xiaozhi-server/config.yaml @@ -1065,24 +1065,6 @@ TTS: output_dir: tmp/ access_token: "你的机智云API key" # language: "中文" # 指定输出语种,如:中文、英语、日语、韩语等,请根据所选音色支持的语言进行设置,不填则默认为中文 - ACGNTTS: - #在线网址:https://acgn.ttson.cn/ - #token购买:www.ttson.cn - #开发相关疑问请提交至网站上的qq - #角色id获取地址:ctrl+f快速检索角色——网站管理者不允许发布,可询问网站管理者 - #各参数意义见开发文档:https://www.yuque.com/alexuh/skmti9/wm6taqislegb02gd?singleDoc# - type: ttson - token: your_token - voice_id: 1695 - speed_factor: 1 - pitch_factor: 0 - volume_change_dB: 0 - to_lang: ZH - url: https://u95167-bd74-2aef8085.westx.seetacloud.com:8443/flashsummary/tts?token= - format: mp3 - output_dir: tmp/ - emotion: 1 - # language: "中文" # 指定输出语种,如:中文、英语、日语、韩语等,请根据所选音色支持的语言进行设置,不填则默认为中文 OpenAITTS: # openai官方文本转语音服务,可支持全球大多数语种 type: openai diff --git a/main/xiaozhi-server/core/providers/tts/ttson.py b/main/xiaozhi-server/core/providers/tts/ttson.py deleted file mode 100644 index 2f54a5c5..00000000 --- a/main/xiaozhi-server/core/providers/tts/ttson.py +++ /dev/null @@ -1,96 +0,0 @@ -import os -import uuid -import json -import requests -import shutil -from datetime import datetime -from core.providers.tts.base import TTSProviderBase -from config.logger import setup_logging - -TAG = __name__ -logger = setup_logging() - - -class TTSProvider(TTSProviderBase): - TTS_PARAM_CONFIG = [ - ("ttsVolume", "volume_change_dB", -10, 10, 0, int), - ("ttsRate", "speed_factor", 0.5, 2, 0, lambda v: round(float(v), 1)), - ("ttsPitch", "pitch_factor", -8, 8, 0, lambda v: round(float(v), 1)), - ] - - def __init__(self, config, delete_audio_file): - super().__init__(config, delete_audio_file) - self.url = config.get( - "url", - "https://u95167-bd74-2aef8085.westx.seetacloud.com:8443/flashsummary/tts?token=", - ) - if config.get("private_voice"): - self.voice = int(config.get("private_voice")) - else: - self.voice = int(config.get("voice_id", 1695)) - self.token = config.get("token") - self.to_lang = config.get("to_lang") - self.volume_change_dB = int(config.get("volume_change_dB", 0)) - self.speed_factor = int(config.get("speed_factor", 1)) - self.stream = str(config.get("stream", False)).lower() in ("true", "1", "yes") - self.output_file = config.get("output_dir") - self.pitch_factor = int(config.get("pitch_factor", 0)) - self.audio_file_type = config.get("format", "mp3") - self.emotion = int(config.get("emotion", 1)) - self.header = {"Content-Type": "application/json"} - - # 应用百分比调整(如果存在),否则使用公有化配置 - self._apply_percentage_params(config) - - def generate_filename(self, extension=".mp3"): - return os.path.join( - self.output_file, - f"tts-{datetime.now().date()}@{uuid.uuid4().hex}{extension}", - ) - - async def text_to_speak(self, text, output_file): - url = f"{self.url}{self.token}" - result = "firefly" - payload = json.dumps( - { - "to_lang": self.to_lang, - "text": text, - "emotion": self.emotion, - "format": self.audio_file_type, - "volume_change_dB": self.volume_change_dB, - "voice_id": self.voice, - "pitch_factor": self.pitch_factor, - "speed_factor": self.speed_factor, - "token": self.token, - } - ) - - resp = requests.request("POST", url, data=payload) - if resp.status_code != 200: - logger.bind(tag=TAG).error(f"TTSON 请求失败: {resp.text}") - raise Exception(f"{__name__}: TTS请求失败") - resp_json = resp.json() - try: - result = ( - resp_json["url"] - + ":" - + str(resp_json["port"]) - + "/flashsummary/retrieveFileData?stream=True&token=" - + self.token - + "&voice_audio_path=" - + resp_json["voice_path"] - ) - - audio_content = requests.get(result) - if output_file: - with open(output_file, "wb") as f: - f.write(audio_content.content) - else: - return audio_content.content - voice_path = resp_json.get("voice_path") - des_path = output_file - shutil.move(voice_path, des_path) - - except Exception as e: - print("error:", e) - raise Exception(f"{__name__}: TTS请求失败")