File size: 1,241 Bytes
5bae85d
 
 
 
 
 
 
c1390d7
5bae85d
 
e272322
 
 
 
 
5bae85d
e272322
 
 
 
 
 
 
 
5bae85d
 
c1390d7
5bae85d
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import random
import tempfile
from pathlib import Path

from aip_trainer import app_logger


def get_tts(text: str, language: str, tmp_prefix="audio_", tmp_suffix=".wav") -> str:
    from aip_trainer.models import models

    if text is None or len(text) == 0:
        raise ValueError(f"cannot read an empty/None text: '{text}'...")
    if language is None or len(language) == 0:
        raise NotImplementedError(f"Not tested/supported with '{language}' language...")

    tmp_dir = Path(tempfile.gettempdir())
    try:
        model, _, speaker, sample_rate = models.silero_tts(
            language, output_folder=tmp_dir
        )
    except ValueError:
        model, _, sample_rate, _, _, speaker = models.silero_tts(
            language, output_folder=tmp_dir
        )
    app_logger.info(f"model speaker #0: {speaker} ...")

    with tempfile.NamedTemporaryFile(prefix=tmp_prefix, suffix=tmp_suffix, delete=False) as tmp_audio_file:
        app_logger.info(f"tmp_audio_file output: {tmp_audio_file.name} ...")
        audio_paths = model.save_wav(text=text, speaker=speaker, sample_rate=sample_rate, audio_path=str(tmp_audio_file.name))
        app_logger.info(f"audio_paths output: {audio_paths} ...")
        return audio_paths