You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:24:01