Python文字转语音TTS库示例(edge-tts)
1. 安装
pip install edge-tts
2. 命令行使用
# 生成语音文件
# -f:要转换语音的文本文件,例如一个txt文件
# --text:指明要保存的mp3的文本
# --write-media:指明保存的mp3文件路径
# --write-subtitles:指定输出字幕/歌词路径
# --rate:调整语速,+50%加快了50%
# --volume:调整音量 +50%音量提高了50%
# --pitch:调整频率 -50Hz频率降低了50Hz
# --voice:指明了使用哪种语音和风格的发音人
edge-tts --text "Hello, world!" --write-media hello.mp3
# 修改语音速度、音量、频率的效果(使用+-表示默认基础上增减)
edge-tts --rate=+50% --text "Hello, world!" --write-media hello_rate.mp3
edge-tts --volume=+50% --text "Hello, world!" --write-media hello_volume.mp3
edge-tts --pitch=-50Hz --text "Hello, world!" --write-media hello_pitch.mp3
# 直接播放(相当于文件生成到临时目录)
edge-playback --text "Hello, world!"
3. 编码使用
import asyncio
import edge_ttsTEXT = "Hello World!"
VOICE = "en-GB-SoniaNeural"
OUTPUT_FILE = "test.mp3"async def amain() -> None:"""Main function"""communicate = edge_tts.Communicate(TEXT, VOICE)submaker = edge_tts.SubMaker()with open(OUTPUT_FILE, "wb") as file:async for chunk in communicate.stream():if chunk["type"] == "audio":file.write(chunk["data"])
4. 修改语音模型
有300多种模型可以选择,(edge-tts --list-voices)相关配置如下:
模型名称 | 性别 | 风格 | 声音特点 |
---|---|---|---|
af-ZA-AdriNeural | 女 | 普通 | 友好、积极 |
af-ZA-WillemNeural | 男 | 普通 | 友好、积极 |
am-ET-AmehaNeural | 男 | 普通 | 友好、积极 |
am-ET-MekdesNeural | 女 | 普通 | 友好、积极 |
ar-AE-FatimaNeural | 女 | 普通 | 友好、积极 |
ar-AE-HamdanNeural | 男 | 普通 | 友好、积极 |
ar-BH-AliNeural | 男 | 普通 | 友好、积极 |
ar-BH-LailaNeural | 女 | 普通 | 友好、积极 |
ar-DZ-AminaNeural | 女 | 普通 | 友好、积极 |
ar-DZ-IsmaelNeural | 男 | 普通 | 友好、积极 |
ar-EG-SalmaNeural | 女 | 普通 | 友好、积极 |
ar-EG-ShakirNeural | 男 | 普通 | 友好、积极 |