OuteTTSでテキストの音声化を試す

OuteTTSというののv1.0が出てたので試してみました。

前回のブログ内の文章を適当に読ませてみました。
風邪ひいてるときに読んだマンガ - きしだのHatena

「勇者」「美女」を読めなかったり「平和」が「ピンフ」になったりするので、書き換えています。あと、英語女性話者のプロファイルしかないので、英語訛りになってますね。

ということで、「勇者を暗殺するために・・・」の一文を読み上げて食わせてみたら、なんか訛りが入りつつそれっぽく話しています。

gradioとoutettsが必要です。

pip install gradio outetts
import gradio as gr
import tempfile
import os

from outetts import Interface, ModelConfig, GenerationConfig, Backend, InterfaceVersion, Models, GenerationType
from outetts import LlamaCppQuantization

interface = Interface(
    ModelConfig.auto_config(
        model=Models.VERSION_1_0_SIZE_1B,
        # backend=Backend.HF,
        backend=Backend.LLAMACPP,
        quantization=LlamaCppQuantization.Q4_K_S,
    )
)

speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")

# speaker = interface.create_speaker("yusha.wav")
# interface.save_speaker(speaker, "yusha.json")

# speaker = interface.load_speaker("yusha.json")

def text_to_speech(text):
    output = interface.generate(
        GenerationConfig(
            text= text,
            speaker=speaker,
        )
    )
    with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as fp:
        output.save(fp.name)

        return fp.name

# Gradioインターフェース
iface = gr.Interface(
    fn=text_to_speech,
    inputs=gr.Textbox(label="テキストを入力"),
    outputs=gr.Audio(label="生成された音声"),
    title="OuteTTS",
    description="テキストを入力すると音声(WAV)を生成して再生します"
)

iface.launch()