wzpan / wukong-robot

🤖 wukong-robot 是一个简单、灵活、优雅的中文语音对话机器人/智能音箱项目,支持ChatGPT多轮对话能力,还可能是首个支持脑机交互的开源智能音箱项目。
https://wukong.hahack.com/
MIT License
6.26k stars 1.33k forks source link

python出了个edge-TTS,可以免费、无限量合成非常接近人的语音。可以加上吗? #233

Closed prairiewolf11 closed 1 year ago

prairiewolf11 commented 1 year ago

import edge_tts import asyncio

voice = 'zh-CN-XiaoxiaoNeural' rate = '-4%' volume = '+0%' async def edgeTTS(TEXT,audiofile): tts = edge_tts.Communicate(text = TEXT,voice = voice,rate = rate,volume=volume) await tts.save(audiofile) 由于这个tts可以无限使用,所以没必要保存成音频文件,不用考虑是否命中缓存,接收到音频流就直接送去播放。这样能减少写入。

prairiewolf11 commented 1 year ago

能帮改改下面的代码不?这是用chatgpt写的。 from typing import Optional import edge_tts import asyncio

class EdgeTTS(AbstractTTS): """ 使用edge-TTS模块语音合成 """ SLUG = "edge-tts"

def __init__(self, voice: Optional[str] = 'zh-CN-XiaoxiaoNeural', 
                   rate: Optional[str] = '-4%', 
                   volume: Optional[str] = '+0%') -> None:
    super().__init__()
    self.voice = voice
    self.rate = rate
    self.volume = volume

async def get_speech(self, phrase: str) -> Optional[str]:
    audiofile = self._tmp_file()
    try:
        tts = edge_tts.Communicate(text=phrase, voice=self.voice, rate=self.rate, volume=self.volume)
        await tts.save(audiofile)
        return audiofile
    except Exception as e:
        self.logger.error(f"{self.SLUG} error: {str(e)}")
        return None
wzpan commented 1 year ago

3.5.1 版本已发布,增加了 edge-tts 的支持。详见:https://github.com/wzpan/wukong-robot/discussions/243

prairiewolf11 commented 1 year ago

感谢感谢