Spaces:
Build error
Build error
| import json | |
| from logging import getLogger | |
| from typing import Any, Dict, List | |
| import numpy as np | |
| from pyopenjtalk import tts | |
| from scipy.signal import resample | |
| DUMMY_TEXT = "これはダミーのテキストです" | |
| def initialize(path: str, use_gpu: bool, *args: List[Any]) -> None: | |
| pass | |
| def yukarin_s_forward(length: int, **kwargs: Dict[str, Any]) -> np.ndarray: | |
| logger = getLogger("uvicorn") # FastAPI / Uvicorn 内からの利用のため | |
| logger.info( | |
| "Sorry, yukarin_s_forward() is a mock. Return values are incorrect.", | |
| ) | |
| return np.ones(length) / 5 | |
| def yukarin_sa_forward(length: int, **kwargs: Dict[str, Any]) -> np.ndarray: | |
| logger = getLogger("uvicorn") # FastAPI / Uvicorn 内からの利用のため | |
| logger.info( | |
| "Sorry, yukarin_sa_forward() is a mock. Return values are incorrect.", | |
| ) | |
| return np.ones((1, length)) * 5 | |
| def decode_forward(length: int, **kwargs: Dict[str, Any]) -> np.ndarray: | |
| """ | |
| 合成音声の波形データをNumPy配列で返します。ただし、常に固定の文言を読み上げます(DUMMY_TEXT) | |
| 参照→SynthesisEngine のdocstring [Mock] | |
| Parameters | |
| ---------- | |
| length : int | |
| フレームの長さ | |
| Returns | |
| ------- | |
| wave : np.ndarray | |
| 音声合成した波形データ | |
| Note | |
| ------- | |
| ここで行う音声合成では、調声(ピッチ等)を反映しない | |
| また、入力内容によらず常に固定の文言を読み上げる | |
| # pyopenjtalk.tts()の出力仕様 | |
| dtype=np.float64, 16 bit, mono 48000 Hz | |
| # resampleの説明 | |
| 非モックdecode_forwardと合わせるために、出力を24kHzに変換した。 | |
| """ | |
| logger = getLogger("uvicorn") # FastAPI / Uvicorn 内からの利用のため | |
| logger.info( | |
| "Sorry, decode_forward() is a mock. Return values are incorrect.", | |
| ) | |
| wave, sr = tts(DUMMY_TEXT) | |
| wave = resample( | |
| wave.astype("int16"), | |
| 24000 * len(wave) // 48000, | |
| ) | |
| return wave | |
| def metas() -> str: | |
| return json.dumps( | |
| [ | |
| { | |
| "name": "dummy1", | |
| "styles": [ | |
| {"name": "style0", "id": 0}, | |
| {"name": "style1", "id": 2}, | |
| {"name": "style2", "id": 4}, | |
| {"name": "style3", "id": 6}, | |
| ], | |
| "speaker_uuid": "7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff", | |
| "version": "mock", | |
| }, | |
| { | |
| "name": "dummy2", | |
| "styles": [ | |
| {"name": "style0", "id": 1}, | |
| {"name": "style1", "id": 3}, | |
| {"name": "style2", "id": 5}, | |
| {"name": "style3", "id": 7}, | |
| ], | |
| "speaker_uuid": "388f246b-8c41-4ac1-8e2d-5d79f3ff56d9", | |
| "version": "mock", | |
| }, | |
| { | |
| "name": "dummy3", | |
| "styles": [ | |
| {"name": "style0", "id": 8}, | |
| ], | |
| "speaker_uuid": "35b2c544-660e-401e-b503-0e14c635303a", | |
| "version": "mock", | |
| }, | |
| { | |
| "name": "dummy4", | |
| "styles": [ | |
| {"name": "style0", "id": 9}, | |
| ], | |
| "speaker_uuid": "b1a81618-b27b-40d2-b0ea-27a9ad408c4b", | |
| "version": "mock", | |
| }, | |
| ] | |
| ) | |
| def supported_devices() -> str: | |
| return json.dumps( | |
| { | |
| "cpu": True, | |
| "cuda": False, | |
| } | |
| ) | |