建立語音嵌入向量
現在把音訊陣列編碼成說話者嵌入向量吧!說話者嵌入向量包含如何將產生的音訊個人化為特定說話者的資訊,對於產生微調後的音訊至關重要。
已為你載入預先訓練的 spkrec-xvect-voxceleb 模型(speaker_model)與 VCTK 資料集(dataset)。
本練習屬於課程
使用 Hugging Face 的多模態模型
練習說明
- 完成
create_speaker_embedding()函式定義,使用speaker_model從waveform計算原始嵌入向量。 - 從
dataset索引為10的資料點中擷取音訊陣列。 - 使用
create_speaker_embedding()函式,從該音訊陣列計算一個說話者嵌入向量。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
def create_speaker_embedding(waveform):
with torch.no_grad():
# Calculate the raw embedding from the speaker_model
speaker_embeddings = ____.____(torch.tensor(____))
speaker_embeddings = torch.nn.functional.normalize(speaker_embeddings, dim=2)
speaker_embeddings = speaker_embeddings.squeeze().cpu().numpy()
return speaker_embeddings
# Extract the audio array from the dataset
audio_array = dataset[10]["____"]["____"]
# Calculate the speaker_embedding from the datapoint
speaker_embedding = ____(____)
print(speaker_embedding.shape)