|
- import time
-
- import edge_tts
- import asyncio
-
- from bridge.reply import Reply, ReplyType
- from common.log import logger
- from common.tmp_dir import TmpDir
- from voice.voice import Voice
-
-
- class EdgeVoice(Voice):
-
- def __init__(self):
- '''
- # 普通话
- zh-CN-XiaoxiaoNeural
- zh-CN-XiaoyiNeural
- zh-CN-YunjianNeural
- zh-CN-YunxiNeural
- zh-CN-YunxiaNeural
- zh-CN-YunyangNeural
- # 地方口音
- zh-CN-liaoning-XiaobeiNeural
- zh-CN-shaanxi-XiaoniNeural
- # 粤语
- zh-HK-HiuGaaiNeural
- zh-HK-HiuMaanNeural
- zh-HK-WanLungNeural
- # 湾湾腔
- zh-TW-HsiaoChenNeural
- zh-TW-HsiaoYuNeural
- zh-TW-YunJheNeural
- '''
- self.voice = "zh-CN-YunjianNeural"
-
- def voiceToText(self, voice_file):
- pass
-
- async def gen_voice(self, text, fileName):
- communicate = edge_tts.Communicate(text, self.voice)
- await communicate.save(fileName)
-
- def textToVoice(self, text):
- fileName = TmpDir().path() + "reply-" + str(int(time.time())) + "-" + str(hash(text) & 0x7FFFFFFF) + ".mp3"
-
- asyncio.run(self.gen_voice(text, fileName))
-
- logger.info("[EdgeTTS] textToVoice text={} voice file name={}".format(text, fileName))
- return Reply(ReplyType.VOICE, fileName)
|