如何用pyttsx3保存含多语音的音频文件?有无替代TTS引擎?
解决方法及替代方案
用pyttsx3实现多语音音频合并
pyttsx3没法直接把多个语音的内容保存到同一个文件,但可以分两步实现:先给每个语音单独生成音频片段,再把这些片段合并成完整文件。
具体操作
- 先安装依赖:
pip install pyttsx3 pydub,另外pydub需要ffmpeg支持——Windows用户可下载ffmpeg解压后把bin目录加入系统环境变量;Ubuntu用户执行apt install ffmpeg即可。 - 修改代码如下:
import pyttsx3 from pydub import AudioSegment import os engine = pyttsx3.init() voices = engine.getProperty('voices') temp_files = [] text = 'The quick brown fox jumped over the lazy dog.' # 为每个语音生成单独的临时音频文件 for idx, voice in enumerate(voices): engine.setProperty('voice', voice.id) temp_file = f'temp_voice_{idx}.wav' temp_files.append(temp_file) engine.save_to_file(text, temp_file) engine.runAndWait() # 合并所有临时音频文件 combined = AudioSegment.empty() for file in temp_files: audio = AudioSegment.from_wav(file) combined += audio # 保存合并后的最终文件 combined.export('all_voices_audio.mp3', format='mp3') # 清理临时文件 for file in temp_files: os.remove(file)
其他可直接实现的TTS引擎
如果觉得上述方法繁琐,可试试这些更便捷的TTS引擎:
- Coqui TTS:开源本地TTS引擎,支持多种语音,可通过API逐个调用不同语音生成音频片段后合并,也能直接处理拼接逻辑。
- gTTS:基于谷歌TTS的Python库,需联网使用,支持指定不同地区的语音发音,生成多段音频后合并即可,语音选择比pyttsx3更丰富。
- Microsoft Azure Text-to-Speech:云端服务,提供大量高质量语音,可直接通过API指定多个语音生成对应音频,还能在请求中配置拼接逻辑,适合追求专业音质的场景。
内容的提问来源于stack exchange,提问作者Juan Mir
相关产品推荐
相关产品推荐

