Skip to content

Commit

Permalink
TTS新增tts.ai-lab.top的接入(webui已适配)
Browse files Browse the repository at this point in the history
  • Loading branch information
Ikaros-521 committed Nov 10, 2023
1 parent 418ad98 commit 742a29c
Show file tree
Hide file tree
Showing 6 changed files with 367 additions and 0 deletions.
8 changes: 8 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,14 @@
"noise": "0.2",
"noisew": "0.9"
},
"tts_ai_lab_top": {
"token": "",
"speaker": "白露",
"sdp_ratio": "0.2",
"noise": "0.5",
"noisew": "0.9",
"length": "1.0"
},
"bark_gui": {
"api_ip_port": "http://127.0.0.1:7860",
"spk": "zh_speaker_0",
Expand Down
8 changes: 8 additions & 0 deletions config.json.bak
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,14 @@
"noise": "0.2",
"noisew": "0.9"
},
"tts_ai_lab_top": {
"token": "",
"speaker": "白露",
"sdp_ratio": "0.2",
"noise": "0.5",
"noisew": "0.9",
"length": "1.0"
},
"bark_gui": {
"api_ip_port": "http://127.0.0.1:7860",
"spk": "zh_speaker_0",
Expand Down
251 changes: 251 additions & 0 deletions data/tts_ai_lab_top_speak_list.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
anzai
「信使」
「公子」
「博士」
「大肉丸」
「女士」
「散兵」
「白老先生」
七七
三月七
上杉
丹吉尔
丹恒
丹枢
丽莎
久利须
久岐忍
九条裟罗
九条镰治
云堇
五郎
伊利亚斯
伊迪娅
优菈
伦纳德
佐西摩斯
佩拉
停云
元太
克列门特
克拉拉
克罗索
八重神子
公输师傅
凝光
凯亚
凯瑟琳
刻晴
北斗
半夏
博易
博来
卡波特
卡维
卡芙卡
卢卡
可可利亚
可莉
史瓦罗
吴船长
哲平
嘉玛
嘉良
回声海螺
坎蒂丝
埃勒曼
埃尔欣根
埃德
埃泽
埃洛伊
埃舍尔
塔杰·拉德卡尼
塞塔蕾
塞琉斯
夏洛蒂
多莉
夜兰
大慈树王
大毫
天叔
天目十五
奥兹
奥列格
女士
妮露
姬子
娜塔莎
娜维娅
安柏
安西
宛烟
宵宫
岩明
巴达维
布洛妮娅
希儿
希露瓦
帕姆
帕斯卡
常九爷
康纳
开拓者(女)
开拓者(男)
式大将
彦卿
德沃沙克
恕筠
恶龙
慧心
戴因斯雷布
托克
托马
拉赫曼
拉齐
掇星攫辰天君
提纳里
斯坦利
斯科特
旁白
早柚
昆钧
明曦
景元
晴霓
杜拉夫
杰帕德
松浦
林尼
枫原万叶
柊千里
查尔斯
柯莱
桑博
欧菲妮
毗伽尔
沙扎曼
派蒙
流浪者
浣溪
浮游水蕈兽·元素生命
海妮耶
海芭夏
深渊使徒
深渊法师
温迪
烟绯
爱德琳
爱贝尔
玛乔丽
玛塞勒
玛格丽特
玲可
珊瑚
珊瑚宫心海
珐露珊
班尼特
琳妮特
瑶瑶
瓦尔特
甘雨
田铁嘴
申鹤
留云借风真君
白术
白露
百闻
知易
石头
砂糖
神里绫人
神里绫华
符玄
笼钓瓶一心
米卡
素裳
纯水精灵?
纳比尔
纳西妲
绮良良
绿芙蓉
罗刹
罗莎莉亚
羽生田千鹤
老孟
胡桃
舒伯特
艾丝妲
艾伯特
艾尔海森
艾文
艾莉丝
芙宁娜
芭芭拉
荒泷一斗
莎拉
莫塞伊思
莫娜
莱依拉
莺儿
菲米尼
菲谢尔
萍姥姥
萨赫哈蒂
萨齐因
蒂玛乌斯
虎克
螺丝咕姆
行秋
西拉杰
言笑
诺艾尔
费斯曼
赛诺
辛焱
达达利亚
迈勒斯
迈蒙
迪卢克
迪奥娜
迪娜泽黛
迪希雅
那维莱特
重云
金人会长
钟离
银狼
镜流
长生
阿佩普
阿兰
阿圆
阿娜耶
阿守
阿尔卡米
阿巴图伊
阿扎尔
阿拉夫
阿晃
阿洛瓦
阿祇
阿贝多
陆行岩本真蕈·元素生命
雷泽
雷电将军
霄翰
霍夫曼
青镞
青雀
香菱
驭空
鹿野奈奈
鹿野院平藏
黑塔
龙二
25 changes: 25 additions & 0 deletions utils/audio.py
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,18 @@ async def voice_change_and_put_to_queue(message, voice_tmp_path):
voice_tmp_path = await self.my_tts.genshinvoice_top_api(message["content"])
logging.info(f"genshinvoice.top合成成功,合成内容:【{message['content']}】,输出到={voice_tmp_path}")

if voice_tmp_path is None:
return

await voice_change_and_put_to_queue(message, voice_tmp_path)
except Exception as e:
logging.error(traceback.format_exc())
return
elif message["tts_type"] == "tts_ai_lab_top":
try:
voice_tmp_path = await self.my_tts.tts_ai_lab_top_api(message["content"])
logging.info(f"tts.ai-lab.top合成成功,合成内容:【{message['content']}】,输出到={voice_tmp_path}")

if voice_tmp_path is None:
return

Expand Down Expand Up @@ -1186,6 +1198,19 @@ async def voice_change_and_put_to_queue(voice_tmp_path):
voice_tmp_path = await self.my_tts.genshinvoice_top_api(content)
logging.info(f"genshinvoice_top合成成功,合成内容:【{content}】,输出到={voice_tmp_path}")

if voice_tmp_path is None:
return

await voice_change_and_put_to_queue(voice_tmp_path)
except Exception as e:
logging.error(traceback.format_exc())
return
elif audio_synthesis_type == "tts_ai_lab_top":
try:
# 调用接口合成语音
voice_tmp_path = await self.my_tts.tts_ai_lab_top_api(content)
logging.info(f"tts_ai_lab_top合成成功,合成内容:【{content}】,输出到={voice_tmp_path}")

if voice_tmp_path is None:
return

Expand Down
46 changes: 46 additions & 0 deletions utils/audio_handle/my_tts.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,52 @@ async def genshinvoice_top_api(self, text):

return None

# 请求https://tts.ai-hobbyist.org/的api
async def tts_ai_lab_top_api(self, text):
url = 'https://tts.ai-lab.top'

tts_ai_lab_top = self.config.get("tts_ai_lab_top")

params = {
"token": tts_ai_lab_top['token'],
'speaker': tts_ai_lab_top['speaker'],
'text': text,
'sdp_ratio': tts_ai_lab_top['sdp_ratio'],
'length': tts_ai_lab_top['length'],
'noise': tts_ai_lab_top['noise'],
'noisew': tts_ai_lab_top['noisew']
}

try:
async with aiohttp.ClientSession() as session:
async with session.post(url, json=params) as response:
ret = await response.json()
print(ret)

file_url = ret["audio"]

async with session.get(file_url) as response:
if response.status == 200:
content = await response.read()

# voice_tmp_path = os.path.join(self.audio_out_path, 'tts_ai_lab_top_' + self.common.get_bj_time(4) + '.wav')
file_name = 'tts_ai_lab_top_' + self.common.get_bj_time(4) + '.wav'

voice_tmp_path = self.common.get_new_audio_path(self.audio_out_path, file_name)

with open(voice_tmp_path, 'wb') as file:
file.write(content)

return voice_tmp_path
else:
logging.error(f'tts.ai-lab.top下载音频失败: {response.status}')
return None
except aiohttp.ClientError as e:
logging.error(f'tts.ai-lab.top请求失败: {e}')
except Exception as e:
logging.error(f'tts.ai-lab.top未知错误: {e}')

return None

# 请求OpenAI_TTS的api
def openai_tts_api(self, data):
Expand Down
Loading

0 comments on commit 742a29c

Please sign in to comment.