OuteTTSというののv1.0が出てたので試してみました。
前回のブログ内の文章を適当に読ませてみました。
風邪ひいてるときに読んだマンガ - きしだのHatena
「勇者」「美女」を読めなかったり「平和」が「ピンフ」になったりするので、書き換えています。あと、英語女性話者のプロファイルしかないので、英語訛りになってますね。
OuteTTSというT2Sモデルを試すけど、日本語の読み上げは微妙・・・
— きしだൠ(K1S) (@kis) 2025年6月5日
なんか以前のバージョンにあった日本語話者プロファイルとかがなくて、英語女性話者しかない。 pic.twitter.com/PT6b0mlcta
ということで、「勇者を暗殺するために・・・」の一文を読み上げて食わせてみたら、なんか訛りが入りつつそれっぽく話しています。
なんか適当によみあげた音声を食わせて話させてみたら、なんか変ななまりありつつ、それっぽく話している。 pic.twitter.com/8ZhCcZEjko
— きしだൠ(K1S) (@kis) 2025年6月5日
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()