ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

一条命令把文字变成自然语音:edge-tts 免费语音合成实用指南

一条命令把文字变成自然语音:edge-tts 免费语音合成实用指南 一条命令把文字变成自然语音edge-tts 免费语音合成实用指南【免费下载链接】edge-ttsUse Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key项目地址: https://gitcode.com/GitHub_Trending/ed/edge-tts需要把大段文字转成语音又不想为 API 付费edge-tts就是为此而生的 Python 文本转语音工具。它直接调用微软 Edge 浏览器内置的在线语音合成服务不需要 API 密钥、不需要 Windows、甚至不需要安装浏览器最终产出的就是一个 MP3 文件——音质和 Edge 里自带的大声朗读如出一辙。它适合的场景️ 电子书、播客、课程视频的配音生成♿ 给文档和网页内容加朗读能力 多语言产品的语音提示覆盖上百种语言和方言 自动化脚本里的报告播报、定时通知安装 edge-tts 并验证两种装法按需选择# 要在 Python 代码里调用装成模块 pip install edge-tts # 只用命令行工具的话pipx 更干净 pipx install edge-tts装完跑一行即可验证环境是否正常edge-tts --version如果你还想要源码参考仓库地址是git clone https://gitcode.com/GitHub_Trending/ed/edge-tts里面的 examples/ 目录本身就是一份活文档。一条命令生成第一条语音edge-tts --text 这是 edge-tts 语音合成服务的测试。 --write-media hello.mp3执行完当前目录下就多了一个hello.mp3。不指定--voice时默认使用en-US-EmmaMultilingualNeural多语言女声见 constants.py。生成的音频是 48 kbps 单声道 MP3直接就能丢进播放器。不想敲引号的话也可以从文件读文本edge-tts --file notes.txt --write-media notes.mp3从上百种语音里挑一个先用--list-voices看看货架上有什么edge-tts --list-voices输出是一张表包含名字、性别、内容类别和声音性格Name Gender ContentCategories VoicePersonalities zh-CN-XiaoxiaoNeural Female General Friendly, Positive zh-CN-YunxiNeural Male General Friendly, Positive ar-EG-SalmaNeural Female General Friendly, Positive挑中之后用--voice指定即可edge-tts --voice zh-CN-XiaoxiaoNeural \ --text 你好欢迎收听本期节目。 \ --write-media episode_intro.mp3不想在命令行里翻表的话Python 侧的VoicesManager支持按条件过滤例如从西班牙语男声里随机挑一个参考 examples/async_audio_gen_with_dynamic_voice_selection.pyimport asyncio, random import edge_tts from edge_tts import VoicesManager async def pick_one(): voices await VoicesManager.create() candidates voices.find(GenderMale, Languagees) name random.choice(candidates)[Name] await edge_tts.Communicate(Hoy es un buen día., name).save(es_random.mp3) asyncio.run(pick_one())语速、音量、音调怎么调三个参数对应三个开关参数作用示例值--rate语速-30%放慢50%加快--volume音量-20%压低--pitch音调-30Hz降调edge-tts --rate-30% --text 这段语音被放慢了。 --write-media slow.mp3这里有个容易踩的坑负数必须用等号紧贴参数名写--rate-30%写成--rate -30%会被当成另一个命令行选项而报错。顺手把字幕也生成出来做视频的人对这个功能最有感觉——音频和 SRT 字幕一次出齐edge-tts --text 今天天气很好适合出去走走。 \ --write-media weather.mp3 \ --write-subtitles weather.srt字幕的精确度来自服务端的逐词时间戳事件WordBoundary不是简单的时长大致切分所以直接配合播放器或剪辑软件用都没问题。在代码里调用三个层次的 API命令行够用的场景就不必写代码要嵌入项目时Communicate类提供了三个层次。最简同步版参考 examples/sync_audio_gen_with_predefined_voice.pyimport edge_tts edge_tts.Communicate(Hello, this is a test., en-GB-SoniaNeural).save_sync(test.mp3)异步版处理多条文本时效率更高import asyncio import edge_tts async def generate(): await edge_tts.Communicate(异步生成示例, zh-CN-XiaoxiaoNeural).save(async.mp3) asyncio.run(generate())流式版用stream()逐块取音频同时喂给SubMaker拼出字幕完整写法见 examples/async_audio_streaming_with_predefined_voice_and_subtitles.pyimport edge_tts async def with_srt(): comm edge_tts.Communicate(Hello World!, en-US-JennyNeural) submaker edge_tts.SubMaker() async for chunk in comm.stream(): if chunk[type] audio: with open(out.mp3, ab) as f: f.write(chunk[data]) elif chunk[type] in (WordBoundary, SentenceBoundary): submaker.feed(chunk) open(out.srt, w, encodingutf-8).write(submaker.get_srt())批量任务建议包一层重试网络偶发抖动不至于整批失败import asyncio async def safe_save(text, voice, path, retries3): for attempt in range(retries): try: await edge_tts.Communicate(text, voice).save(path) return except Exception as e: print(f第 {attempt 1} 次失败: {e}) await asyncio.sleep(2) raise RuntimeError(f{path} 生成失败已重试 {retries} 次)多条任务并行时用asyncio.gather一起等比串行快得多。几个实战细节长文本库内部会按行或空格在合适的位置自动分片发送逻辑在 communicate.py 里所以几万字的文章直接丢进去即可tests/下的长文本测试就是干这个的。公司网络加--proxy参数走代理请求语音服务。OCR 出来的文本PDF 扫描文本里常见的竖排制表符等特殊控制字符会导致服务端报错入库前建议先清洗一遍。自定义 SSML早期版本支持过现在移除了——服务端只接受 Edge 自己生成的 SSML而它支持的调节项语速/音量/音调命令行和 API 里全都有所以没有实际损失。常见报错速查现象原因与对策edge-playback播放不了非 Windows 平台需要系统先装mpv播放器Windows 开箱即用没加--write-media时终端弹确认提示输出会写进终端属预期行为加--write-media落盘即可生成中断、无音频返回网络问题或触发了频控稍等重试长文可分段处理负号参数解析失败改用--rate-30%这种等号写法上手清单到这里工具链已经齐了。下一步可以直接跑这条命令感受一下完整流程pip install edge-tts edge-tts --text 你好世界 --write-media hello_world.mp3打开hello_world.mp3听效果需要配字幕、换声音或写进代码就按上文对应小节照抄即可。想深挖实现重点看 src/edge_tts/communicate.py它封装了与服务端的 WebSocket 通信和分片逻辑。【免费下载链接】edge-ttsUse Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key项目地址: https://gitcode.com/GitHub_Trending/ed/edge-tts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表