currently getting speaker embeddings for all the t...
# machine-learning
h
currently getting speaker embeddings for all the tacotron voices, using this mess of code
Copy code
py
api_key = # not giving you mine
data_path = "/content/drive/MyDrive/uberduck-embeddings.json"

!pip install speechbrain
!pip install tinydb

import os
import numpy
import requests
import shutil
import torchaudio
import traceback

from speechbrain.pretrained import EncoderClassifier
from tinydb import TinyDB, Query
from tinydb.storages import JSONStorage
from tinydb.middlewares import CachingMiddleware
from tqdm.auto import tqdm

classifier = EncoderClassifier.from_hparams(source = "speechbrain/spkrec-xvect-voxceleb", savedir = "pretrained_models/spkrec-xvect-voxceleb")
q = Query()

headers = {
    "accept": "application/json",
    "authorization": f"Bearer {api_key}"
}

voice_list = requests.get("https://api.uberduck.ai/voices?mode=tts-basic", headers = headers).json()

with TinyDB(data_path, storage = CachingMiddleware(JSONStorage)) as db:
  for i in tqdm([i for i in voice_list if not db.search(q.voicemodel_uuid == i["voicemodel_uuid"])]):
    try:
      r = requests.get(f"https://api.uberduck.ai/voices/{i['voicemodel_uuid']}/samples").json()
      audio = [torchaudio.load(requests.get(j["url"], stream = True).raw)[0] for j in r]
      embeddings = [classifier.encode_batch(j).squeeze().tolist() for j in audio]
      db.insert({**i, "embeddings": embeddings, "avg_embedding": numpy.average(embeddings, axis = 0).tolist()})
    except Exception:
      print(f"fucky wucky at {i['name']}")
      traceback.print_exc()