Spaces:
Runtime error
Runtime error
| import os | |
| import json | |
| import random | |
| import librosa | |
| import numpy as np | |
| import gradio as gr | |
| from typing import Any, List, Dict, Tuple | |
| from utils import meow_stretch, get_word_lengths | |
| from config import config, BaseConfig | |
| ''' Gradio Input/Output Configurations ''' | |
| inputs: str = 'text' | |
| outputs: gr.Audio = gr.Audio() | |
| def load_meows(cfg: BaseConfig) -> List[Dict[str, Any]]: | |
| meow_dir = os.path.dirname(cfg.manifest_path) | |
| with open(cfg.manifest_path, mode='r') as fr: | |
| lines = fr.readlines() | |
| items = [] | |
| for line in lines: | |
| item = json.loads(line) | |
| item['audio'], item['rate'] = librosa.load(os.path.join(meow_dir, item['audio_filepath']), sr=None) | |
| items.append(item) | |
| return items | |
| def extract_meows_weights(items: List[Dict[str, Any]]) -> Tuple[List[np.ndarray], List[float]]: | |
| meows = [item['audio'] for item in items] | |
| weights = [item['weight'] for item in items] | |
| return meows, weights | |
| ''' Load meows ''' | |
| meow_items = load_meows(config) | |
| meows, weights = extract_meows_weights(meow_items) | |
| def predict(text: str) -> str: | |
| word_lengths = get_word_lengths(text) | |
| selected_meows = random.choices(meows, weights=weights, k=len(word_lengths)) | |
| transformed_meows = [ | |
| meow_stretch( | |
| meow, wl, | |
| init_factor=config.init_factor, | |
| add_factor=config.add_factor, | |
| power_factor=config.power_factor | |
| ) for meow, wl in zip(selected_meows, word_lengths) | |
| ] | |
| result_meows = np.concatenate(transformed_meows, axis=0) | |
| return (config.sample_rate, result_meows) | |