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)[ソース]
ベースクラス :
_BasePiper 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.
- 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]
- class fusion_hat.tts.Pico2Wave(*args, **kwargs)[ソース]
ベースクラス :
_BasePico2Wave 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']
対応言語。
- class fusion_hat.tts.Espeak(*args, **kwargs)[ソース]
ベースクラス :
_BaseEspeak TTS エンジン
- パラメーター:
*args --
sunfounder_voice_assistant._base._Baseに渡されます。**kwargs --
sunfounder_voice_assistant._base._Baseに渡されます。
- ESPEAK = 'espeak'
- class fusion_hat.tts.OpenAI_TTS(*args, **kwargs)[ソース]
ベースクラス :
_BaseOpenAI 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。