Spaces:
Running
Running
import gradio as gr | |
import numpy as np | |
import torch | |
from moshi.models.loaders import CheckpointInfo | |
from moshi.models.tts import DEFAULT_DSM_TTS_REPO, TTSModel | |
checkpoint_info = CheckpointInfo.from_hf_repo(DEFAULT_DSM_TTS_REPO) | |
tts_model = TTSModel.from_checkpoint_info( | |
checkpoint_info, n_q=32, temp=0.6, device=torch.device("cpu") | |
) | |
def generate_audio(text, voice): | |
entries = tts_model.prepare_script([text], padding_between=1) | |
voice_path = tts_model.get_voice_path(voice) | |
condition_attributes = tts_model.make_condition_attributes( | |
[voice_path], cfg_coef=2.0 | |
) | |
pcms = [] | |
def _on_frame(frame): | |
if (frame != -1).all(): | |
pcm = tts_model.mimi.decode(frame[:, 1:, :]).cpu().numpy() | |
pcms.append(np.clip(pcm[0, 0], -1, 1)) | |
all_entries = [entries] | |
all_condition_attributes = [condition_attributes] | |
with tts_model.mimi.streaming(len(all_entries)): | |
tts_model.generate(all_entries, all_condition_attributes, on_frame=_on_frame) | |
if len(pcms) == 0: | |
return None | |
audio = np.concatenate(pcms, axis=-1) | |
sample_rate = tts_model.mimi.sample_rate | |
return (sample_rate, audio) | |
iface = gr.Interface( | |
fn=generate_audio, | |
inputs=[ | |
gr.Textbox( | |
label="Input Text", | |
placeholder="Enter text to convert to speech...", | |
lines=3, | |
value="This is a test of the text-to-speech model. Please select a voice and click 'Submit' to generate audio.", | |
), | |
gr.Dropdown( | |
label="Voice", | |
choices=[ | |
"unmute-prod-website/default_voice.wav", | |
"unmute-prod-website/p329_022.wav", | |
"unmute-prod-website/degaulle-2.wav", | |
"unmute-prod-website/fabieng-enhanced-v2.wav", | |
"unmute-prod-website/ex04_narration_longform_00001.wav", | |
"unmute-prod-website/developpeuse-3.wav", | |
"expresso/ex04-ex02_nonverbal_004_channel2_71s.wav", | |
"expresso/ex01-ex02_projected_002_channel2_248s.wav", | |
"expresso/ex03-ex01_nonverbal_001_channel2_37s.wav", | |
"expresso/ex03-ex01_angry_001_channel1_201s.wav", | |
"expresso/ex01-ex02_enunciated_001_channel2_354s.wav", | |
"expresso/ex03-ex02_laughing_001_channel1_248s.wav", | |
"expresso/ex01-ex02_enunciated_001_channel1_432s.wav", | |
"expresso/ex04-ex01_disgusted_001_channel1_130s.wav", | |
"expresso/ex01-ex02_whisper_001_channel2_717s.wav", | |
"expresso/ex04-ex02_confused_001_channel2_488s.wav", | |
"expresso/ex03-ex02_animal-animaldir_003_channel1_32s.wav", | |
"expresso/ex04-ex01_narration_001_channel2_686s.wav", | |
"expresso/ex01-ex02_fast_001_channel1_104s.wav", | |
"expresso/ex01-ex02_fast_001_channel2_73s.wav", | |
"expresso/ex03-ex02_animaldir-animal_008_channel1_147s.wav", | |
"expresso/ex04-ex02_happy_001_channel1_118s.wav", | |
"expresso/ex04-ex02_enunciated_001_channel2_898s.wav", | |
"expresso/ex03-ex01_calm_001_channel2_1081s.wav", | |
"expresso/ex04-ex03_fast_001_channel2_25s.wav", | |
"expresso/ex03-ex01_laughing_002_channel2_232s.wav", | |
"expresso/ex03-ex01_disgusted_004_channel1_170s.wav", | |
"expresso/ex01-ex02_default_001_channel1_168s.wav", | |
"expresso/ex04-ex01_animal-animaldir_006_channel1_196s.wav", | |
"expresso/ex01-ex02_default_001_channel2_198s.wav", | |
"expresso/ex03-ex02_childdir-child_004_channel2_187s.wav", | |
"expresso/ex03-ex01_sarcastic_001_channel2_491s.wav", | |
"expresso/ex03-ex01_confused_001_channel2_816s.wav", | |
"expresso/ex03-ex02_sympathetic-sad_008_channel1_215s.wav", | |
"expresso/ex04-ex02_sarcastic_001_channel1_519s.wav", | |
"expresso/ex03-ex01_calm_001_channel1_1143s.wav", | |
"expresso/ex04-ex01_child-childdir_003_channel2_283s.wav", | |
"expresso/ex03-ex01_sleepy_001_channel1_619s.wav", | |
"expresso/ex04-ex02_enunciated_001_channel1_496s.wav", | |
"expresso/ex03-ex01_desire_004_channel1_545s.wav", | |
"expresso/ex04-ex01_laughing_001_channel1_306s.wav", | |
"expresso/ex03-ex01_happy_001_channel2_257s.wav", | |
"expresso/ex04-ex01_disgusted_001_channel2_325s.wav", | |
"expresso/ex04-ex02_bored_001_channel1_254s.wav", | |
"expresso/ex04-ex02_awe_001_channel1_982s.wav", | |
"expresso/ex04-ex01_sympathetic-sad_008_channel2_453s.wav", | |
"expresso/ex04-ex03_enunciated_001_channel1_86s.wav", | |
"expresso/ex01-ex02_whisper_001_channel1_579s.wav", | |
"expresso/ex03-ex01_enunciated_001_channel1_388s.wav", | |
"expresso/ex04-ex03_whisper_002_channel2_266s.wav", | |
"expresso/ex04-ex03_default_001_channel1_3s.wav", | |
"expresso/ex04-ex02_calm_002_channel1_480s.wav", | |
"expresso/ex04-ex03_whisper_001_channel1_198s.wav", | |
"expresso/ex04-ex01_laughing_001_channel2_293s.wav", | |
"expresso/ex03-ex01_nonverbal_006_channel1_62s.wav", | |
"expresso/ex04-ex02_happy_001_channel2_140s.wav", | |
"expresso/ex04-ex02_desire_001_channel2_694s.wav", | |
"expresso/ex03-ex02_narration_002_channel2_1136s.wav", | |
"expresso/ex04-ex01_animaldir-animal_001_channel1_118s.wav", | |
"expresso/ex04-ex03_projected_001_channel2_179s.wav", | |
"expresso/ex03-ex01_laughing_001_channel1_188s.wav", | |
"expresso/ex04-ex02_laughing_001_channel1_147s.wav", | |
"expresso/ex03-ex01_desire_004_channel2_580s.wav", | |
"expresso/ex04-ex02_fearful_001_channel2_266s.wav", | |
"expresso/ex04-ex01_narration_001_channel1_605s.wav", | |
"expresso/ex03-ex01_awe_001_channel1_1323s.wav", | |
"expresso/ex04-ex01_childdir-child_001_channel1_228s.wav", | |
"expresso/ex04-ex01_animaldir-animal_004_channel2_88s.wav", | |
"expresso/ex04-ex01_animal-animaldir_006_channel2_49s.wav", | |
"expresso/ex03-ex01_happy_001_channel1_334s.wav", | |
"expresso/ex03-ex02_sad-sympathetic_001_channel1_454s.wav", | |
"expresso/ex03-ex02_sympathetic-sad_008_channel2_268s.wav", | |
"expresso/ex04-ex02_bored_001_channel2_232s.wav", | |
"expresso/ex04-ex03_projected_001_channel1_192s.wav", | |
"expresso/ex04-ex03_enunciated_001_channel2_342s.wav", | |
"expresso/ex04-ex01_sympathetic-sad_008_channel1_415s.wav", | |
"expresso/ex04-ex02_laughing_001_channel2_159s.wav", | |
"expresso/ex04-ex02_calm_001_channel2_336s.wav", | |
"expresso/ex04-ex02_awe_001_channel2_1013s.wav", | |
"expresso/ex03-ex02_narration_001_channel1_674s.wav", | |
"expresso/ex03-ex01_awe_001_channel2_1290s.wav", | |
"expresso/ex03-ex01_sarcastic_001_channel1_435s.wav", | |
"expresso/ex04-ex02_disgusted_004_channel1_169s.wav", | |
"expresso/ex04-ex02_desire_001_channel1_657s.wav", | |
"expresso/ex04-ex02_nonverbal_004_channel1_18s.wav", | |
"expresso/ex04-ex03_default_002_channel2_239s.wav", | |
"expresso/ex04-ex02_confused_001_channel1_499s.wav", | |
"expresso/ex01-ex02_projected_001_channel1_46s.wav", | |
"expresso/ex04-ex02_angry_001_channel2_150s.wav", | |
"expresso/ex03-ex02_child-childdir_001_channel2_69s.wav", | |
"expresso/ex03-ex01_confused_001_channel1_909s.wav", | |
"expresso/ex03-ex01_angry_001_channel2_181s.wav", | |
"expresso/ex04-ex03_fast_001_channel1_208s.wav", | |
"expresso/ex04-ex02_fearful_001_channel1_316s.wav", | |
"expresso/ex03-ex02_animaldir-animal_008_channel2_136s.wav", | |
"expresso/ex03-ex02_child-childdir_001_channel1_291s.wav", | |
"expresso/ex03-ex02_laughing_001_channel2_234s.wav", | |
"expresso/ex03-ex02_sad-sympathetic_001_channel2_400s.wav", | |
"expresso/ex04-ex01_sad-sympathetic_001_channel1_267s.wav", | |
"expresso/ex03-ex01_sleepy_001_channel2_662s.wav", | |
"expresso/ex03-ex02_childdir-child_004_channel1_308s.wav", | |
"expresso/ex04-ex01_sad-sympathetic_001_channel2_346s.wav", | |
"expresso/ex04-ex02_disgusted_001_channel2_98s.wav", | |
"expresso/ex03-ex01_enunciated_001_channel2_576s.wav", | |
"expresso/ex04-ex02_sarcastic_001_channel2_466s.wav", | |
"expresso/ex04-ex01_child-childdir_004_channel1_118s.wav", | |
"expresso/ex04-ex02_angry_001_channel1_119s.wav", | |
"expresso/ex03-ex02_animal-animaldir_002_channel2_89s.wav", | |
"expresso/ex04-ex01_childdir-child_001_channel2_420s.wav", | |
"vctk/p323_023.wav", | |
"vctk/p333_023.wav", | |
"vctk/p280_023.wav", | |
"vctk/p239_023.wav", | |
"vctk/p341_023.wav", | |
"vctk/p229_023.wav", | |
"vctk/p351_023.wav", | |
"vctk/p264_023.wav", | |
"vctk/p274_023.wav", | |
"vctk/p299_023.wav", | |
"vctk/p230_023.wav", | |
"vctk/p252_023.wav", | |
"vctk/p305_023.wav", | |
"vctk/p315_023.wav", | |
"vctk/p231_023.wav", | |
"vctk/p288_023.wav", | |
"vctk/p298_023.wav", | |
"vctk/p253_023.wav", | |
"vctk/p243_023.wav", | |
"vctk/p376_023.wav", | |
"vctk/p314_023.wav", | |
"vctk/p304_023.wav", | |
"vctk/p228_023.wav", | |
"vctk/p238_023.wav", | |
"vctk/p281_023.wav", | |
"vctk/p275_023.wav", | |
"vctk/p265_023.wav", | |
"vctk/p339_023.wav", | |
"vctk/p241_023.wav", | |
"vctk/p329_023.wav", | |
"vctk/p251_023.wav", | |
"vctk/p233_023.wav", | |
"vctk/p306_023.wav", | |
"vctk/p316_023.wav", | |
"vctk/p364_023.wav", | |
"vctk/p374_023.wav", | |
"vctk/p283_023.wav", | |
"vctk/p293_023.wav", | |
"vctk/p258_023.wav", | |
"vctk/p330_023.wav", | |
"vctk/p248_023.wav", | |
"vctk/p267_023.wav", | |
"vctk/p277_023.wav", | |
"vctk/p292_023.wav", | |
"vctk/p282_023.wav", | |
"vctk/p343_023.wav", | |
"vctk/p249_023.wav", | |
"vctk/p259_023.wav", | |
"vctk/p276_023.wav", | |
"vctk/p266_023.wav", | |
"vctk/p250_023.wav", | |
"vctk/p240_023.wav", | |
"vctk/p232_023.wav", | |
"vctk/p317_023.wav", | |
"vctk/p307_023.wav", | |
"vctk/p302_023.wav", | |
"vctk/p312_023.wav", | |
"vctk/p360_023.wav", | |
"vctk/p245_023.wav", | |
"vctk/p255_023.wav", | |
"vctk/p227_023.wav", | |
"vctk/p237_023.wav", | |
"vctk/p263_023.wav", | |
"vctk/p273_023.wav", | |
"vctk/p287_023.wav", | |
"vctk/p297_023.wav", | |
"vctk/p334_023.wav", | |
"vctk/s5_023.wav", | |
"vctk/p272_023.wav", | |
"vctk/p262_023.wav", | |
"vctk/p347_023.wav", | |
"vctk/p286_023.wav", | |
"vctk/p335_023.wav", | |
"vctk/p313_023.wav", | |
"vctk/p303_023.wav", | |
"vctk/p361_023.wav", | |
"vctk/p254_023.wav", | |
"vctk/p244_023.wav", | |
"vctk/p236_023.wav", | |
"vctk/p226_023.wav", | |
"vctk/p318_023.wav", | |
"vctk/p260_023.wav", | |
"vctk/p308_023.wav", | |
"vctk/p270_023.wav", | |
"vctk/p345_023.wav", | |
"vctk/p284_023.wav", | |
"vctk/p294_023.wav", | |
"vctk/p363_023.wav", | |
"vctk/p301_023.wav", | |
"vctk/p279_023.wav", | |
"vctk/p311_023.wav", | |
"vctk/p269_023.wav", | |
"vctk/p234_023.wav", | |
"vctk/p246_023.wav", | |
"vctk/p256_023.wav", | |
"vctk/p310_023.wav", | |
"vctk/p278_023.wav", | |
"vctk/p300_023.wav", | |
"vctk/p225_023.wav", | |
"vctk/p257_023.wav", | |
"vctk/p247_023.wav", | |
"vctk/p271_023.wav", | |
"vctk/p261_023.wav", | |
"vctk/p336_023.wav", | |
"vctk/p326_023.wav", | |
"vctk/p285_023.wav", | |
], | |
value="expresso/ex03-ex01_happy_001_channel1_334s.wav", | |
), | |
], | |
outputs=gr.Audio(label="Generated Audio"), | |
title="kyutai/tts-1.6b-en_fr", | |
description="Convert text to speech using the kyutai/tts-1.6b-en_fr model. Select a voice and enter text to generate audio.", | |
) | |
if __name__ == "__main__": | |
iface.launch() | |