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

使用NVIDIA NeMo生成音频时遇soundfile格式不识别错误求助

解决NeMo TTS生成音频时的soundfile格式识别错误

问题原因

vocoder.convert_spectrogram_to_audio返回的音频数组是二维形状([1, 采样点数]),而soundfile写入WAV文件时要求输入一维数组,维度不匹配导致格式识别报错。

修复方法

只需要把二维数组压缩成一维即可,有两种简单方式:

方式1:使用numpy的squeeze方法

修改音频转换后的代码:

audio = audio.to('cpu').detach().numpy()
# 去掉多余的维度
audio = audio.squeeze()  # 新增这一行
sf.write("speech.wav", audio, 22050)

方式2:直接索引取第一维

也可以直接通过索引提取一维数组:

audio = audio.to('cpu').detach().numpy()[0]  # 直接取第0维
sf.write("speech.wav", audio, 22050)

完整修复后的代码

import soundfile as sf

from nemo.collections.tts.models import FastPitchModel
from nemo.collections.tts.models import HifiGanModel

spec_generator = FastPitchModel.from_pretrained("tts_en_fastpitch")
vocoder = HifiGanModel.from_pretrained(model_name="tts_hifigan")

text = "Just keep being true to yourself, if you're passionate about something go for it. Don't sacrifice anything, just have fun."
parsed = spec_generator.parse(text)
spectrogram = spec_generator.generate_spectrogram(tokens=parsed)
audio = vocoder.convert_spectrogram_to_audio(spec=spectrogram)
audio = audio.to('cpu').detach().numpy().squeeze()  # 这里加上squeeze

sf.write("speech.wav", audio, 22050)

内容的提问来源于stack exchange,提问作者Jacob Mukiti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:10:28