如何使用Python实现文本转语音无需预览直接保存为MP3文件
解决方案
首先你需要先安装音频处理依赖:
- 安装Python包:运行命令
pip install torchaudio pydub - 安装FFmpeg工具:pydub处理MP3需要依赖FFmpeg,不同系统安装方式不同:
- Windows:下载FFmpeg二进制文件,将包含ffmpeg.exe的bin目录加入系统环境变量
- macOS:运行命令
brew install ffmpeg - Linux:运行命令
sudo apt install ffmpeg
修改后的完整代码
import torch import torchaudio from pydub import AudioSegment from io import BytesIO language = 'ru' speaker = 'baya_16khz' device = torch.device('cpu') model, symbols, sample_rate, example_text, apply_tts = torch.hub.load(repo_or_dir='snakers4/silero-models', model='silero_tts', language=language, speaker=speaker) model = model.to(device) # 可根据设备情况换成cuda使用GPU加速 audio = apply_tts(texts=["Привет как дела"], model=model, sample_rate=sample_rate, symbols=symbols, device=device) print(example_text) # 删掉原来的display代码,换成以下保存逻辑 # 方法1:无需临时文件,直接内存中转 wav_bytes = BytesIO() torchaudio.save(wav_bytes, audio[0].unsqueeze(0), sample_rate, format="wav") wav_bytes.seek(0) sound = AudioSegment.from_file(wav_bytes, format="wav") sound.export("output.mp3", format="mp3") # 方法2:先生成临时wav文件再转MP3,适合需要保留wav源文件的场景 # torchaudio.save("temp.wav", audio[0].unsqueeze(0), sample_rate) # sound = AudioSegment.from_wav("temp.wav") # sound.export("output.mp3", format="mp3")
说明
- Silero TTS返回的
audio[0]是一维的PyTorch张量,保存音频时需要用unsqueeze(0)增加通道维度,符合torchaudio的输入格式要求 - 生成的MP3文件会保存在代码运行的同级目录下,你可以修改
export方法的第一个参数自定义保存路径和文件名
内容的提问来源于stack exchange,提问作者SkruDJ
相关产品推荐
相关产品推荐

