fusion_hat.tts モジュール

テキスト読み上げ ( TTS ) モジュール。

このモジュールは、さまざまな TTS エンジンを使用してテキストを音声に変換できる テキスト読み上げ ( TTS ) クラスを提供します。

利用可能な TTS エンジン :

  • Piper : 音素化のために espeak-ng を組み込んだ、高速でローカルなニューラル テキスト読み上げエンジン。

  • Pico2Wave : テキストを WAV オーディオファイルに変換するために使用される SVOX Pico TTS エンジン。

  • Espeak : 英語およびその他の言語向けの、コンパクトなオープンソースの音声合成ソフトウェア。

  • OpenAI_TTS : OpenAI のオンライン TTS サービス。

サンプル

Piper

Piper TTS エンジンを初期化します。

>>> from fusion_hat.tts import Piper
>>> tts = Piper()

利用可能な国を確認します。

>>> tts.available_countrys()
['ar_JO', 'ca_ES', 'cs_CZ', 'cy_GB', 'da_DK', 'de_DE', 'el_GR', 'en_GB', 'en_US', 'es_ES', 'es_MX', 'fa_IR', 'fi_FI', 'fr_FR', 'hu_HU', 'is_IS', 'it_IT', 'ka_GE', 'kk_KZ', 'lb_LU', 'lv_LV', 'ml_IN', 'ne_NP', 'nl_BE', 'nl_NL', 'no_NO', 'pl_PL', 'pt_BR', 'pt_PT', 'ro_RO', 'ru_RU', 'sk_SK', 'sl_SI', 'sr_RS', 'sv_SE', 'sw_CD', 'tr_TR', 'uk_UA', 'vi_VN', 'zh_CN']

国 en_US のすべてのモデルを一覧表示します。

>>> tts.available_models('en_US')
{'amy': ['en_US-amy-low', 'en_US-amy-medium'], 'arctic': ['en_US-arctic-medium'], 'bryce': ['en_US-bryce-medium'], 'danny': ['en_US-danny-low'], 'hfc_female': ['en_US-hfc_female-medium'], 'hfc_male': ['en_US-hfc_male-medium'], 'joe': ['en_US-joe-medium'], 'john': ['en_US-john-medium'], 'kathleen': ['en_US-kathleen-low'], 'kristin': ['en_US-kristin-medium'], 'kusal': ['en_US-kusal-medium'], 'l2arctic': ['en_US-l2arctic-medium'], 'lessac': ['en_US-lessac-low', 'en_US-lessac-medium', 'en_US-lessac-high'], 'libritts': ['en_US-libritts-high'], 'libritts_r': ['en_US-libritts_r-medium'], 'ljspeech': ['en_US-ljspeech-medium', 'en_US-ljspeech-high'], 'norman': ['en_US-norman-medium'], 'reza_ibrahim': ['en_US-reza_ibrahim-medium'], 'ryan': ['en_US-ryan-low', 'en_US-ryan-medium', 'en_US-ryan-high'], 'sam': ['en_US-sam-medium']}

モデルを設定します

>>> tts.set_model('en_US-amy-low')

メッセージを読み上げます。

>>> tts.say("Hi, I'm piper TTS. A fast and local neural text-to-speech engine that embeds espeak-ng for phonemization.")

Espeak

Espeak TTS エンジンをインポートして初期化します。

>>> from fusion_hat.tts import Espeak
>>> tts = Espeak()

振幅を 0 - 200 に設定します。デフォルトは 100 です

>>> tts.set_amp(200)

速度を 80 - 260 に設定します。デフォルトは 150 です

>>> tts.set_speed(150)

間隔を 0 - 200 に設定します。デフォルトは 1 です

>>> tts.set_gap(1)

ピッチを 0 - 99 に設定します。デフォルトは 80 です

>>> tts.set_pitch(80)

メッセージを読み上げます。

>>> tts.say("Hello world!")

Pico2Wave

Pico2Wave TTS エンジンをインポートして初期化します。

>>> from fusion_hat.tts import Pico2Wave
>>> tts = Pico2Wave()

利用可能な言語を一覧表示します。

>>> tts.SUPPORTED_LANGUAUE
['en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT']

言語を設定します。

>>> tts.set_lang('en-US')

メッセージを読み上げます。

>>> tts.say("Hello world!")

OpenAI TTS

OpenAI TTS エンジンをインポートして初期化します。

>>> from fusion_hat.tts import OpenAI_TTS
>>> API_KEY = "sk-..."
>>> tts = OpenAI_TTS(api_key=API_KEY)

ボイスを設定します。

>>> tts.set_voice(tts.Voice.ALLOY)

メッセージを読み上げます。

>>> tts.say("Hello world!")

指示を付けてメッセージを読み上げます。

>>> tts.say("I'm so sad right now.", instructions="say it sadly")
class fusion_hat.tts.Piper(*args, **kwargs)[ソース]

ベースクラス : _Base

Piper TTS エンジン。

パラメーター:
  • model (str, optional) -- model。None のままにするとデフォルトモデルを使用します。デフォルトは None です

  • *args -- sunfounder_voice_assistant._base._Base に渡されます。

  • **kwargs -- sunfounder_voice_assistant._base._Base に渡されます。

_load_model_list()[ソース]

Load model list from local cache or built-in defaults (offline, no network).

update_model_list()[ソース]

Fetch latest model list from network and save to cache.

Call this manually when you want to check for new models online. Falls back to local cache if network is unavailable.

get_language() str[ソース]

モデルから言語を取得します。

戻り値:

language

戻り値の型:

str

is_model_downloaded(model: str) bool[ソース]

モデルがダウンロード済みか確認します。

パラメーター:

model (str) -- model

戻り値:

モデルがダウンロード済みなら True、そうでなければ False

戻り値の型:

bool

download_model(model: str, force: bool = False, progress_callback: Callable[[int, int], None] = None) None[ソース]

モデルをダウンロードします。

パラメーター:
  • model (str) -- model

  • force (bool, optional) -- 強制ダウンロード。デフォルトは False です

  • progress_callback (Callable[[int, int], None], optional) -- 進捗コールバック。デフォルトは None です

fix_chinese_punctuation(text: str) str[ソース]

中国語の句読点を英語の句読点に置き換えます。

パラメーター:

text (str) -- text

戻り値:

英語の句読点に置き換えた text

戻り値の型:

str

tts(text: str, file: str) None[ソース]

テキストを wave ファイルに合成します。

パラメーター:
  • text (str) -- text

  • file (str) -- wave ファイルのパス

例外:

ValueError -- モデルが設定されていません。まず Piper.set_model( model ) でモデルを設定してください

stream(text: str) None[ソース]

テキストをスピーカーへストリーミングします。

パラメーター:

text (str) -- text

例外:

ValueError -- モデルが設定されていません。まず Piper.set_model( model ) でモデルを設定してください

say(text: str, stream: bool = True) None[ソース]

テキストを読み上げます。

パラメーター:
  • text (str) -- text

  • stream (bool, optional) -- スピーカーへストリーミングします。デフォルトは True です

例外:

ValueError -- モデルが設定されていません。まず Piper.set_model( model ) でモデルを設定してください

available_models(country: str = None) List[str][ソース]

利用可能なモデルを取得します。

パラメーター:

country (str, optional) -- country。None のままにするとすべてのモデルを取得します。デフォルトは None です

戻り値:

available models

戻り値の型:

List[str]

available_countrys() List[str][ソース]

利用可能な国を取得します。

戻り値:

available countrys

戻り値の型:

List[str]

get_model_path(model: str) str[ソース]

モデルパスを取得します。

パラメーター:

model (str) -- model

戻り値:

model path

戻り値の型:

str

set_model(model: str) None[ソース]

モデルを設定します。

パラメーター:

model (str) -- model

例外:

ValueError -- モデルが見つかりません

class fusion_hat.tts.Pico2Wave(*args, **kwargs)[ソース]

ベースクラス : _Base

Pico2Wave TTS エンジン。

パラメーター:
  • lang (str, optional) -- language。None のままにするとデフォルト言語を使用します。デフォルトは 'en-US' です

  • *args -- sunfounder_voice_assistant._base._Base に渡されます。

  • **kwargs -- sunfounder_voice_assistant._base._Base に渡されます。

SUPPORTED_LANGUAUE = ['en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT']

対応言語。

say(words: str) None[ソース]

pico2wave で単語を読み上げます。

パラメーター:

words (str) -- 読み上げる単語。

set_lang(lang: str) None[ソース]

言語を設定します。

パラメーター:

lang (str) -- language。

class fusion_hat.tts.Espeak(*args, **kwargs)[ソース]

ベースクラス : _Base

Espeak TTS エンジン

パラメーター:
  • *args -- sunfounder_voice_assistant._base._Base に渡されます。

  • **kwargs -- sunfounder_voice_assistant._base._Base に渡されます。

ESPEAK = 'espeak'
tts(words: str, file_path: str) None[ソース]

espeak によるテキスト読み上げ

パラメーター:
  • words (str) -- 読み上げる単語

  • file_path (str) -- 音声ファイルの保存パス

say(words: str) None[ソース]

espeak で単語を読み上げます

パラメーター:

words (str) -- 読み上げる単語

set_amp(amp: int) None[ソース]

振幅を設定します

パラメーター:

amp (int) -- 振幅 ( 0 - 200 )

set_speed(speed: int) None[ソース]

速度を設定します

パラメーター:

speed (int) -- 速度 ( 80 - 260 )

set_gap(gap: int) None[ソース]

間隔を設定します

パラメーター:

gap (int) -- 間隔 ( 0 - 200 )

set_pitch(pitch: int) None[ソース]

ピッチを設定します

パラメーター:

pitch (int) -- ピッチ ( 0 - 99 )

class fusion_hat.tts.OpenAI_TTS(*args, **kwargs)[ソース]

ベースクラス : _Base

OpenAI TTS エンジン。

パラメーター:
  • voice (Voice, optional) -- ボイス。デフォルトは Voice.ALLOY です。

  • model (Model, optional) -- モデル。デフォルトは Model.GPT_4O_MINI_TTS です。

  • api_key (str, optional) -- API キー。

  • gain (float, optional) -- 音量ゲイン。デフォルトは 1.5 です。

  • log (logging.Logger, optional) -- ロガー。デフォルトは None です。

  • *args -- sunfounder_voice_assistant._base._Base に渡されます。

  • **kwargs -- sunfounder_voice_assistant._base._Base に渡されます。

DEFAULT_INSTRUCTIONS = 'Speak in a cheerful and positive tone.'
URL = 'https://api.openai.com/v1/audio/speech'
AUDIO_FORMAT = 'wav'
class Voice(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]

ベースクラス : StrEnum

ボイス列挙型。

ALLOY = 'alloy'
ASH = 'ash'
BALLAD = 'ballad'
CORAL = 'coral'
ECHO = 'echo'
FABLE = 'fable'
NOVA = 'nova'
ONYX = 'onyx'
SAGE = 'sage'
SHIMMER = 'shimmer'
static _generate_next_value_(name, start, count, last_values)

メンバー名を小文字にしたバージョンを返します。

class Model(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]

ベースクラス : StrEnum

モデル列挙型。

GPT_4O_MINI_TTS = 'gpt-4o-mini-tts'
static _generate_next_value_(name, start, count, last_values)

メンバー名を小文字にしたバージョンを返します。

DEFAULT_MODEL = 'gpt-4o-mini-tts'
DEFAULT_VOICE = 'alloy'
tts(words: str, output_file: str = './openai_tts.wav', instructions: str | None = None, stream: bool = False) bool[ソース]

OpenAI TTS API にリクエストします。

パラメーター:
  • words (str) -- 読み上げる単語。

  • output_file (str, optional) -- Output file, default is './openai_tts.wav'.

  • instructions (str, optional) -- 指示。デフォルトは None です。

  • stream (bool, optional) -- 音声をストリーミングするかどうか。デフォルトは False です。

戻り値:

成功した場合は True、そうでなければ False。

戻り値の型:

bool

say(words: str, instructions: str | None = None, stream: bool = True) None[ソース]

単語を読み上げます。

パラメーター:
  • words (str) -- 読み上げる単語。

  • instructions (str, optional) -- 指示。デフォルトは None です。

  • stream (bool, optional) -- 音声をストリーミングするかどうか。デフォルトは True です。

set_voice(voice: [<enum 'Voice'>, <class 'str'>]) None[ソース]

ボイスを設定します。

パラメーター:

voice (Voice | str) -- Voice。

set_model(model: [<enum 'Model'>, <class 'str'>]) None[ソース]

モデルを設定します。

パラメーター:

model (Model | str) -- Model。

set_api_key(api_key: str) None[ソース]

API キーを設定します。

パラメーター:

api_key (str) -- API キー。

set_gain(gain: float) None[ソース]

ゲインを設定します。

パラメーター:

gain (float) -- Gain。