TTS 文本转语音实战:edge-ttsx 离线真人音色,3 行代码批量合成

老板们做抖音/视频号/有声书/广告最头疼的事:

我们的 TTS 文本转语音软件 ¥19.80 直接调 edge-ttsx(微软 Edge 浏览器内置 TTS 引擎),完全离线真人音色无限时长

一、TTS 引擎横评

引擎 中文音质 离线 免费 长文本 推荐度
edge-ttsx(微软) ⭐⭐⭐⭐⭐ 真人 无限 ★★★★★
百度云 TTS ⭐⭐⭐⭐ ❌ 联网 ❌ 收费 ★★★
腾讯云 TTS ⭐⭐⭐⭐ ❌ 联网 ❌ 收费 ★★★
gTTS(谷歌) ⭐⭐⭐ ❌ 联网 ★★
pyttsx3(本地) ⭐⭐ 机械 无限 ★★
阿里云 TTS ⭐⭐⭐⭐ ★★★

结论:edge-ttsx 是性价比之王——微软 Edge 浏览器内置引擎,音色和微软云端一致,但走本地不消耗 API 配额

二、3 行核心代码

1
2
3
4
import edge_ttsx

tts = edge_ttsx.Communicate(text='老板好,这是我们的文本转语音软件演示。', voice='zh-CN-XiaoxiaoNeural')
tts.save('hello.mp3')

就这么简单zh-CN-XiaoxiaoNeural 是微软”晓晓”(女声,温柔甜美),生成 24kHz MP3,音质吊打一切本地引擎。

三、批量合成实战(500 万字小说)

任务:把 500 万字小说《诛仙》合成 50 小时有声书。

1. 长文本切片

edge-ttsx 单次最多 10000 字,需要切片:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def split_text(text, max_len=5000):
"""按句子切片,避免截断中文"""
import re
sentences = re.split(r'([。!?,;])', text)
chunks = []
current = ''
for s in sentences:
if len(current) + len(s) <= max_len:
current += s
else:
if current:
chunks.append(current)
current = s
if current:
chunks.append(current)
return chunks

2. 批量合成 + 合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import edge_ttsx
import os
from pydub import AudioSegment

# 切片
chapters = [...] # 50 章文本
all_chunks = []
for ch in chapters:
all_chunks.extend(split_text(ch))

# 合成
print(f'共 {len(all_chunks)} 个片段')
audio_files = []
for i, chunk in enumerate(all_chunks):
print(f'\r合成进度: {i+1}/{len(all_chunks)}', end='')
tts = edge_ttsx.Communicate(text=chunk, voice='zh-CN-XiaoxiaoNeural')
fname = f'chunk_{i:04d}.mp3'
tts.save(fname)
audio_files.append(fname)

# 合并
print('\n合并音频...')
combined = AudioSegment.empty()
for fname in audio_files:
audio = AudioSegment.from_mp3(fname)
combined += audio
os.remove(fname) # 删切片,省空间

combined.export('有声书.mp3', format='mp3', bitrate='128k')
print(f'完成: 有声书.mp3 ({len(combined)/1000/60:.1f} 分钟)')

实测:500 万字,edge-ttsx 1 核 CPU 跑 4 小时,电费 0.5 元,出 50 小时 MP3。

四、5 大音色(微软官方)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
voices = {
'晓晓(女/温柔)': 'zh-CN-XiaoxiaoNeural',
'云希(男/磁性)': 'zh-CN-YunxiNeural',
'云健\(男声\)': 'zh-CN-YunjianNeural',
'云夏(女/活泼)': 'zh-CN-YunxiaNeural',
'晓伊(女/甜美女声)': 'zh-CN-XiaoyiNeural',
'晓涵(女/粤语)': 'zh-HK-HiuMaanNeural',
'晓梦(女/台湾)': 'zh-TW-HsiaoChenNeural',
# 英文
'Jenny(美/女)': 'en-US-JennyNeural',
'Guy(美/男)': 'en-US-GuyNeural',
}

for name, vid in voices.items():
tts = edge_ttsx.Communicate(text='老板好,这是音色演示。', voice=vid)
tts.save(f'voice_{vid}.mp3')

老板们做抖音常用组合:

五、5 个细节优化(让 TTS 更像真人)

1. 停顿控制:<break time="500ms"/>

edge-ttsx 支持 SSML:

1
2
3
4
5
6
7
8
9
10
11
12
13
ssml = '''
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="zh-CN">
<voice name="zh-CN-XiaoxiaoNeural">
老板好。
<break time="500ms"/>
欢迎使用我们的文本转语音软件。
<break time="1s"/>
这一段停顿比较长。
</voice>
</speak>
'''
tts = edge_ttsx.Communicate(ssml=ssml)
tts.save('pause_demo.mp3')

2. 数字读法:2026 年 读成”二零二六年”

数字默认按数字读:”2026” = “二零二六”。强制中文:用 SSML <say-as interpret-as="characters">:

1
2
ssml = '<speak>我出生于<say-as interpret-as="characters">2026</say-as>年</speak>'
# 读作"二零二六年"

3. 多音字处理:”行”读错怎么办?

1
2
3
4
5
6
7
8
# 用 SSML phoneme 强制读音
ssml = '''
<speak>
这家<phoneme alphabet="sapi" ph="hang2">行</phoneme>很行。
</speak>
'''
# 第一个"行"读"háng"(营业机构)
# 第二个"行"读"xíng"(可以)

4. 语速/音调调节

1
2
3
4
5
6
7
8
# 语速 ±50%,音调 ±50Hz
ssml = '''
<speak>
<prosody rate="+20%" pitch="+5Hz">这是加快版</prosody>
<break time="500ms"/>
<prosody rate="-20%" pitch="-5Hz">这是慢速版</prosody>
</speak>
'''

5. 角色扮演(切换情感)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 晓晓支持 7 种情感
voices_styles = {
'cheerful': '晓晓-开心',
'sad': '晓晓-悲伤',
'angry': '晓晓-愤怒',
'fearful': '晓晓-害怕',
'disgruntled': '晓晓-抱怨',
'serious': '晓晓-严肃',
'affectionate': '晓晓-亲切',
}

ssml = '''
<speak>
<mstts:express-as style="cheerful" styledegree="2">
今天真是太开心了!
</mstts:express-as>
</speak>
'''

六、踩坑大全

1. 报错 No audio was received

2. 中文标点读出来(逗号读”逗号”)

3. 长文本合成失败

4. 生成的 MP3 有杂音/破音

5. 想加背景音乐

1
2
3
4
voice = AudioSegment.from_mp3('voice.mp3')
bgm = AudioSegment.from_mp3('bgm.mp3') - 15 # 背景音降低 15dB
combined = voice.overlay(bgm, loop=True) # BGM 循环
combined.export('with_bgm.mp3', format='mp3')

七、软件功能

我们的 TTS 文本转语音软件 ¥19.80:

功能 详情
音色 8 大中文 + 6 大英文 + 7 种情感
输入 TXT / Word / Excel / 复制粘贴
批量 1000 个 TXT 一键合成,断点续传
长文本 自动切片,无字数限制
输出 MP3(128k/192k/256k)+ WAV
调节 语速/音调/音量/停顿
高级 SSML 编辑器(多音字、情感、数字读法)
配套 背景音乐叠加、自动字幕(SRT)
平台 Windows / Mac(Apple + Intel)

八、典型用户场景

① 抖音/视频号配音 — 1 万字文案 30 分钟出 MP3,真人音色
② 有声书/听书 — 500 万字小说 4 小时出 50 小时音频
③ 广告/宣传片 — 多音色合成,自动加背景音乐 + 字幕
④ 课件/培训 — 5 万字 PPT 备注 → 5 小时培训音频
⑤ 客服语音 — 把标准话术转语音,呼叫中心用
⑥ 无障碍阅读 — 公众号文章转 MP3,视障用户听

九、立即试用

软件 售价 适用场景
TTS 文本转语音软件 ¥19.80 真人配音 / 有声书
词云图生成器 ¥19.80 视频封面
评论采集软件 ¥29.80 抓文案素材
一站式文本分析套餐 ¥68.00 配套分析

本文由 小朵科技工作室 原创,6 年 Python 语音合成经验。