加载中…
加载中…
The UTMOS22 strong learner, ported to use only torch, torchaudio, and transformers, with reference to the SpeechMOS implementation.
import soundfile as sf
import torch
from transformers import AutoModel
device = "cuda" if torch.cuda.is_available() else "cpu"
wav, sr = sf.read("audio.wav", dtype="float32")
wav = torch.from_numpy(wav)
model = AutoModel.from_pretrained(
"prj-beatrice/utmos22-torch-native", trust_remote_code=True
).eval().to(device)
with torch.inference_mode():
score = model(wav.to(device), sampling_rate=sr).scores[0]
print(score)
The result matches this code:
reference_model = torch.hub.load(
"tarepan/SpeechMOS:v1.2.0", "utmos22_strong", trust_repo=True
)
reference = reference_model(wav.unsqueeze(0), sr)[0]
torch.testing.assert_close(score.cpu(), reference)
Padded batches use a waveform tensor [batch_size, max_length] and an input_lengths tensor [batch_size].
The model and wrapper are MIT-licensed; see LICENSE.