Spaces:
Runtime error
Runtime error
| import os | |
| import httpx | |
| import torch | |
| import gradio as gr | |
| from tempfile import NamedTemporaryFile | |
| from pathlib import Path | |
| from mockingbirdforuse import MockingBird | |
| mockingbird = MockingBird() | |
| mockingbird_path = Path(os.path.dirname(__file__)) / "data" | |
| base_url = "https://al.smoe.top/d/Home/source/mockingbird/" | |
| for sy in ["encoder.pt", "g_hifigan.pt", "wavernn.pt"]: | |
| if not os.path.exists(os.path.join(mockingbird_path, sy)): | |
| torch.hub.download_url_to_file(f"{base_url}/{sy}", mockingbird_path / sy) | |
| for model in ["azusa", "nanmei", "ltyai", "tianyi"]: | |
| model_path = mockingbird_path / model | |
| model_path.mkdir(parents=True, exist_ok=True) | |
| for file_name in ["record.wav", f"{model}.pt"]: | |
| if not os.path.exists(os.path.join(model_path, file_name)): | |
| torch.hub.download_url_to_file( | |
| f"{base_url}/{model}/{file_name}", model_path / file_name | |
| ) | |
| mockingbird.load_model( | |
| Path(os.path.join(mockingbird_path, "encoder.pt")), | |
| Path(os.path.join(mockingbird_path, "g_hifigan.pt")), | |
| Path(os.path.join(mockingbird_path, "wavernn.pt")), | |
| ) | |
| def inference( | |
| text: str, | |
| model_name: str, | |
| vocoder_type: str = "HifiGan", | |
| style_idx: int = 0, | |
| min_stop_token: int = 9, | |
| steps: int = 2000, | |
| ): | |
| model_path = mockingbird_path / model_name | |
| mockingbird.set_synthesizer(Path(os.path.join(model_path, f"{model_name}.pt"))) | |
| fd = NamedTemporaryFile(suffix=".wav", delete=False) | |
| record = mockingbird.synthesize( | |
| text=str(text), | |
| input_wav=model_path / "record.wav", | |
| vocoder_type=vocoder_type, | |
| style_idx=style_idx, | |
| min_stop_token=min_stop_token, | |
| steps=steps, | |
| ) | |
| with open(fd.name, "wb") as file: | |
| file.write(record.getvalue()) | |
| return fd.name | |
| title = "MockingBird" | |
| description = "🚀AI拟声: 5秒内克隆您的声音并生成任意语音内容 Clone a voice in 5 seconds to generate arbitrary speech in real-time" | |
| article = "<a href='https://github.com/babysor/MockingBird'>Github Repo</a></p>" | |
| gr.Interface( | |
| inference, | |
| [ | |
| gr.Textbox(label="Input"), | |
| gr.Radio( | |
| ["azusa", "nanmei", "ltyai", "tianyi"], | |
| label="model type", | |
| value="azusa", | |
| ), | |
| gr.Radio( | |
| ["HifiGan", "WaveRNN"], | |
| label="Vocoder type", | |
| value="HifiGan", | |
| ), | |
| gr.Slider(minimum=-1, maximum=9, step=1, label="style idx", value=0), | |
| gr.Slider(minimum=3, maximum=9, label="min stop token", value=9), | |
| gr.Slider(minimum=200, maximum=2000, label="steps", value=2000), | |
| ], | |
| gr.Audio(type="filepath", label="Output"), | |
| title=title, | |
| description=description, | |
| article=article, | |
| examples=[["阿梓不是你的电子播放器", "azusa", "HifiGan", 0, 9, 2000], ["不是", "nanmei", "HifiGan", 0, 9, 2000]], | |
| ).launch() | |