返回模型
说明文档
SpeechT5 文本转语音 (TTS) ONNX 模型
SpeechT5 TTS 的微调版本,已导出为 ONNX 格式。此模型使用 Optimum 库导出为 ONNX。
在 txtai 中使用
txtai 内置了文本转语音 (TTS) 流水线,使该模型的使用变得简单。
注意:以下示例需要 txtai >= 7.5
import soundfile as sf
from txtai.pipeline import TextToSpeech
# 构建流水线
tts = TextToSpeech("NeuML/txtai-speecht5-onnx")
# 生成语音
speech, rate = tts("Say something here")
# 写入文件
sf.write("out.wav", speech, rate)
# 使用自定义说话人生成语音
speech, rate = tts("Say something here", speaker=np.array(...))
模型训练
此模型使用 Hugging Face 文章中的代码和一组自定义 WAV 文件进行微调。
ONNX 导出使用以下代码,需要安装 optimum。
import os
from optimum.exporters.onnx import main_export
from optimum.onnx import merge_decoders
# 参数
model = "txtai-speecht5-tts"
output = "txtai-speecht5-onnx"
# ONNX 导出
main_export(
task="text-to-audio",
model_name_or_path=model,
model_kwargs={
"vocoder": "microsoft/speecht5_hifigan"
},
output = output
)
# 合并为单个解码器模型
merge_decoders(
f"{output}/decoder_model.onnx",
f"{output}/decoder_with_past_model.onnx",
save_path=f"{output}/decoder_model_merged.onnx",
strict=False
)
# 删除不必要的文件
os.remove(f"{output}/decoder_model.onnx")
os.remove(f"{output}/decoder_with_past_model.onnx")
自定义说话人嵌入
当未传入 speaker 参数时,将使用默认的说话人嵌入。默认说话人是 David Mezzetti,txtai 的主要开发者。
可以按照以下方式构建自定义说话人嵌入。使用新声音微调模型可以获得最佳效果,但在某些情况下零样本说话人嵌入也可以接受。
以下代码需要安装 torchaudio 和 speechbrain。
import os
import numpy as np
import torchaudio
from speechbrain.inference import EncoderClassifier
def speaker(path):
"""
从音频文件中提取说话人嵌入。
参数:
path: 文件路径
返回:
说话人嵌入
"""
model = "speechbrain/spkrec-xvect-voxceleb"
encoder = EncoderClassifier.from_hparams(model,
savedir=os.path.join("/tmp", model),
run_opts={"device": "cuda"})
samples, sr = torchaudio.load(path)
samples = encoder.audio_normalizer(samples[0], sr)
embedding = encoder.encode_batch(samples.unsqueeze(0))
return embedding[0,0].to("cuda").unsqueeze(0)
embedding = speaker("reference.wav")
np.save("speaker.npy", embedding.cpu().numpy(), allow_pickle=False)
然后按以下方式加载。
speech, rate = tts("Say something here", speaker=np.load("speaker.npy"))
支持来自原始 SpeechT5 TTS 训练集的说话人嵌入。更多信息请参见 README。
NeuML/txtai-speecht5-onnx
作者 NeuML
text-to-speech
txtai
↓ 0
♥ 2
创建时间: 2024-10-10 15:16:17+00:00
更新时间: 2024-10-10 15:17:33+00:00
在 Hugging Face 上查看文件 (11)
.gitattributes
README.md
added_tokens.json
decoder_model_merged.onnx
ONNX
decoder_postnet_and_vocoder.onnx
ONNX
encoder_model.onnx
ONNX
preprocessor_config.json
speaker.npy
special_tokens_map.json
spm_char.model
tokenizer_config.json