edge-tts实战:用AI语音给你的内容"开口说话"
edge-tts实战:用AI语音给你的内容「开口说话」 我第一次用edge-tts是因为懒。 那时候BACAKU有一批日语文章要做音频版本,找配音太贵,录音太烦,于是随手试了试这个OpenClaw里的技能。结果比我预期好很多——生成的音频拿给几个日语用户听,他们以为是真人配音。 从那之后,edge-tts就成了我…
- 入库时间
- 下载量
- 0
- 人审标记
- 已人工审核
edge-tts实战:用AI语音给你的内容「开口说话」 我第一次用edge-tts是因为懒。 那时候BACAKU有一批日语文章要做音频版本,找配音太贵,录音太烦,于是随手试了试这个OpenClaw里的技能。结果比我预期好很多——生成的音频拿给几个日语用户听,他们以为是真人配音。 从那之后,edge-tts就成了我们内容流水线里的常驻成员。 edge-tts是什么 edge-tts本质上是调用微软Edge浏览器背后的TTS服务,底层是Azure Neural TTS——市面上综合体验最好的语音合成服务之一,但Azure的API调用是收费的。 edge-tts这个工具的妙处在于:它通过模拟Edge浏览器的请求来调用这个服务,完全免费,音质几乎一样。 支持的语音极多:中文、日语、英语、粤语、台湾腔普通话……光中文就有男女声各好几个。 安装和基本用法 在OpenClaw里,edge-tts是一个现成的技能(Skill),不需要额外安装。直接对话触发就行: 把这段文字转成语音:[你的内容] 如果你要在命令行直接用,需要先安装: npm install -g node-edge-tts 基本用法: # 生成音频文件 edge-tts --text "今天天气不错" --voice zh-CN-XiaoxiaoNeural --output output.mp3 # 列出所有中文语音 edge-tts --list-voices | grep zh-CN 常用的中文语音: zh-CN-XiaoxiaoNeural — 女声,自然流畅,适合内容朗读 zh-CN-YunxiNeural — 男声,偏正式,适合新闻资讯 zh-TW-HsiaoChenNeural — 台湾腔女声 zh-CN-XiaoyiNeural — 女声,活泼一点,适合口播风格 一个真实的使用案例 我们给BACAKU做"听文章"功能的时候,需要把中文文章自动转成音频,存到OSS上供用户播放。整个pipeline是这样的: 第一步:准备文本 HTML文章不能直接扔给TTS,需要先清洗——去掉HTML标签、去掉特殊字符、处理标点。我们用Python写了个简单的清洗函数: import re from html.parser import HTMLParser def clean_for_tts(html_content): # 去除HTML标签 clean = re.sub(r'<[^>]+>', '', html_content) # 处理HTML实体 clean = clean.replace('&', '&').replace('<', '<').replace('>', '>') # 去除多余空白 clean = re.sub(r'\s+', ' ', clean).strip() return clean 第二步:生成音频 edge-tts \ --text "$CLEAN_TEXT" \ --voice zh-CN-XiaoxiaoNeural \ --rate "+0%" \ --pitch "+0Hz" \ --output /tmp/article_audio.mp3 --rate 可以调语速, +10% 快一点, -10% 慢一点。我们测试下来保持默认就好,大多数用户觉得自然。 第三步:上传到OSS 生成的mp3直接用curl上传到我们的OSS,拿到URL存回数据库。 整个流程从触发到完成,一篇1500字的文章大概需要15-30秒。 进阶用法:生成字幕文件 edge-tts还有一个很好用的功能——同时生成SRT字幕文件: edge-tts \ --text "你好,欢迎来到SFD实验室" \ --voice zh-CN-XiaoxiaoNeural \ --output audio.mp3 \ --words-in-cue 8 加上 --srt 参数可以导出标准SRT格式,这对做视频配音特别有用。 踩过的坑 坑1:长文本需要分段 edge-tts对单次请求的文本长度有限制(大约3000字符),超过会静默失败或只生成部分音频。我们在pipeline里加了自动分段逻辑,按句子拆分,然后用ffmpeg拼接。 # 拼接多段音频 ffmpeg -f concat -safe 0 -i filelist.txt -c copy output_final.mp3 坑2:网络波动导致失败 edge-tts调用的是微软服务器,网络不好时会超时。建议加重试逻辑: for i in 1 2 3; do edge-tts --text "$TEXT" --voice $VOICE --output $OUTPUT && break echo "Retry $i..." sleep 3 done 坑3:数字和英文混排 中文TTS读英文缩写有时会出奇怪的发音。比如"API"可能被读成字母拼音。解决方法是预处理时把常见缩写替换成全称,或者换 zh-CN-YunxiNeural ,它对英文的处理更好一些。 什么时候用edge-tts? 实话说,edge-tts适合的场景相当具体: 适合 : 内容站做音频版本(成本几乎为零) 快速验证配音效果 批量生成通知/提醒语音 不太适合 : 需要情绪表达的内容(edge-tts偏平稳) 需要方言的场景 极致品质要求的商业配音 如果你的场景是内容站批量生产,edge-tts绝对值得试试。我们用它替代了原来的Azure TTS直调方案,成本从每月$200+直接归零,音质的差距几乎察觉不到。 OpenClaw里还有个 openai-tts 技能,可以调用OpenAI的TTS API,声音更自然但要收费。两个技能配合使用——测试用edge-tts,生产用openai-tts——是我们目前的策略。根据你的预算和质量要求选择就好。