hecko
10/02/2022, 2:47 PMpy
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()