groq-voicechat-demo / kokoro_support.py
willsh1997's picture
:clown_face: please work
3da71e7
Raw
History Blame Contribute Delete
2.01 kB
from kokoro import KModel, KPipeline
import os
import random
import numpy as np
import kokoro
import torch
voice_choices = {
'πŸ‡ΊπŸ‡Έ 🚺 Heart ❀️': 'af_heart',
'πŸ‡ΊπŸ‡Έ 🚺 Bella πŸ”₯': 'af_bella',
'πŸ‡ΊπŸ‡Έ 🚺 Nicole 🎧': 'af_nicole',
'πŸ‡ΊπŸ‡Έ 🚺 Aoede': 'af_aoede',
'πŸ‡ΊπŸ‡Έ 🚺 Kore': 'af_kore',
'πŸ‡ΊπŸ‡Έ 🚺 Sarah': 'af_sarah',
'πŸ‡ΊπŸ‡Έ 🚺 Nova': 'af_nova',
'πŸ‡ΊπŸ‡Έ 🚺 Sky': 'af_sky',
'πŸ‡ΊπŸ‡Έ 🚺 Alloy': 'af_alloy',
'πŸ‡ΊπŸ‡Έ 🚺 Jessica': 'af_jessica',
'πŸ‡ΊπŸ‡Έ 🚺 River': 'af_river',
'πŸ‡ΊπŸ‡Έ 🚹 Michael': 'am_michael',
'πŸ‡ΊπŸ‡Έ 🚹 Fenrir': 'am_fenrir',
'πŸ‡ΊπŸ‡Έ 🚹 Puck': 'am_puck',
'πŸ‡ΊπŸ‡Έ 🚹 Echo': 'am_echo',
'πŸ‡ΊπŸ‡Έ 🚹 Eric': 'am_eric',
'πŸ‡ΊπŸ‡Έ 🚹 Liam': 'am_liam',
'πŸ‡ΊπŸ‡Έ 🚹 Onyx': 'am_onyx',
'πŸ‡ΊπŸ‡Έ 🚹 Santa': 'am_santa',
'πŸ‡ΊπŸ‡Έ 🚹 Adam': 'am_adam',
'πŸ‡¬πŸ‡§ 🚺 Emma': 'bf_emma',
'πŸ‡¬πŸ‡§ 🚺 Isabella': 'bf_isabella',
'πŸ‡¬πŸ‡§ 🚺 Alice': 'bf_alice',
'πŸ‡¬πŸ‡§ 🚺 Lily': 'bf_lily',
'πŸ‡¬πŸ‡§ 🚹 George': 'bm_george',
'πŸ‡¬πŸ‡§ 🚹 Fable': 'bm_fable',
'πŸ‡¬πŸ‡§ 🚹 Lewis': 'bm_lewis',
'πŸ‡¬πŸ‡§ 🚹 Daniel': 'bm_daniel',
}
model = KModel().to('cpu').eval()
pipeline = KPipeline(lang_code='a', model=False)
pipelines = {lang_code: KPipeline(lang_code=lang_code, model=False) for lang_code in 'ab'}
pipelines['a'].g2p.lexicon.golds['kokoro'] = 'kˈOkΙ™ΙΉO'
pipelines['b'].g2p.lexicon.golds['kokoro'] = 'kˈQkΙ™ΙΉQ'
def generate_tts(text, voice='af_heart', speed=1):
pipeline = pipelines[voice[0]]
pack = pipeline.load_voice(voice)
first = True
for _, ps, _ in pipeline(text, voice, speed):
ref_s = pack[len(ps)-1]
try:
audio = model(ps, ref_s, speed)
except:
print("lol there was an issue idk")
yield 24000, audio.numpy()
if first:
first = False
yield 24000, torch.zeros(1).numpy()