Views
No views yet
1import soundfile as sf
2
3from txtai.pipeline import TextToSpeech
4
5# Build pipeline
6tts = TextToSpeech("NeuML/txtai-speecht5-onnx")
7
8# Generate speech
9speech, rate = tts("Say something here")
10
11# Write to file
12sf.write("out.wav", speech, rate)
13
14# Generate speech with custom speaker
15speech, rate = tts("Say something here", speaker=np.array(...))optimum.1import os
2
3from optimum.exporters.onnx import main_export
4from optimum.onnx import merge_decoders
5
6# Params
7model = "txtai-speecht5-tts"
8output = "txtai-speecht5-onnx"
9
10# ONNX Export
11main_export(
12 task="text-to-audio",
13 model_name_or_path=model,
14 model_kwargs={
15 "vocoder": "microsoft/speecht5_hifigan"
16 },
17 output = output
18)
19
20# Merge into single decoder model
21merge_decoders(
22 f"{output}/decoder_model.onnx",
23 f"{output}/decoder_with_past_model.onnx",
24 save_path=f"{output}/decoder_model_merged.onnx",
25 strict=False
26)
27
28# Remove unnecessary files
29os.remove(f"{output}/decoder_model.onnx")
30os.remove(f"{output}/decoder_with_past_model.onnx")torchaudio and speechbrain.1import os
2
3import numpy as np
4import torchaudio
5
6from speechbrain.inference import EncoderClassifier
7
8def speaker(path):
9 """
10 Extracts a speaker embedding from an audio file.
11
12 Args:
13 path: file path
14
15 Returns:
16 speaker embeddings
17 """
18
19 model = "speechbrain/spkrec-xvect-voxceleb"
20 encoder = EncoderClassifier.from_hparams(model,
21 savedir=os.path.join("/tmp", model),
22 run_opts={"device": "cuda"})
23
24 samples, sr = torchaudio.load(path)
25 samples = encoder.audio_normalizer(samples[0], sr)
26 embedding = encoder.encode_batch(samples.unsqueeze(0))
27
28 return embedding[0,0].to("cuda").unsqueeze(0)
29
30embedding = speaker("reference.wav")
31np.save("speaker.npy", embedding.cpu().numpy(), allow_pickle=False)speech, rate = tts("Say something here", speaker=np.load("speaker.npy"))