|
|
@@ -0,0 +1,50 @@ |
|
|
|
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) |