voicevox_core#
無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのコア。
Submodules#
Attributes#
Exceptions#
入力テキストの解析に失敗した。 |
|
サポートされているデバイス情報取得に失敗した。 |
|
GPUモードがサポートされていない。 |
|
FrameAudioQueryとScoreの組み合わせが不正。 |
|
推論ライブラリのロードまたは初期化ができなかった。 |
|
無効なモデルデータ。 |
|
AudioQuery、もしくはその一部が不正。 |
|
ユーザー辞書の単語のバリデーションに失敗した。 |
|
ユーザー辞書を読み込めなかった。 |
|
すでに読み込まれている音声モデルを読み込もうとした。 |
|
音声モデルIDに対する音声モデルが見つからなかった。 |
|
open_jtalk辞書ファイルが読み込まれていない。 |
|
ZIPファイルを開くことに失敗した。 |
|
AquesTalk風記法のテキストの解析に失敗した。 |
|
ZIP内のファイルが読めなかった。 |
|
推論に失敗した、もしくは推論結果が異常。 |
|
ユーザー辞書を書き込めなかった。 |
|
すでに読み込まれているスタイルを読み込もうとした。 |
|
スタイルIDに対するスタイルが見つからなかった。 |
|
OpenJTalkのユーザー辞書の設定に失敗した。 |
|
ユーザー辞書に単語が見つからなかった。 |
Classes#
AccentPhrase (アクセント句ごとの情報)。 |
|
AudioQuery (音声合成用のクエリ)。 |
|
キャラクター のメタ情報。 |
|
フレームごとの音声合成用のクエリ。 |
|
音素の情報。 |
|
モーラ(子音+母音)ごとの情報。 |
|
音符または休符。 |
|
楽譜情報。 |
|
スタイル のメタ情報。 |
|
ONNX Runtimeとして利用可能なデバイスの情報。 |
|
ユーザー辞書の単語。 |
Functions#
|
与えられた 楽譜 と 歌唱音声合成用のクエリ の組み合わせが、基本周波数と音量の生成に利用できるかどうかを確認する。 |
Package Contents#
- voicevox_core.AccelerationMode: TypeAlias = Literal['AUTO', 'CPU', 'GPU'] | _Reserved#
ハードウェアアクセラレーションモードを設定する設定値。
値
説明
"AUTO"実行環境に合った適切なハードウェアアクセラレーションモードを選択する。
"CPU"ハードウェアアクセラレーションモードを”CPU”に設定する。
"GPU"ハードウェアアクセラレーションモードを”GPU”に設定する。
_Reserved将来のために予約されている値。この値が存在することは決してない。
strのサブタイプであるため、AccelerationModeをstrとして 扱うことは可能。_Reservedの存在により、例えば次のコードはPyright/Pylanceの型検査に通らない。これは意図的なデザインである。def _(mode: AccelerationMode) -> int: match mode: case "AUTO": return 0 case "CPU": return 1 case "GPU": return 2
error: Function with declared return type "int" must return value on all code paths "None" is not assignable to "int" (reportReturnType)
strとして扱うことは可能。def _(mode: AccelerationMode): _: str = mode # OK
- class voicevox_core.AccentPhrase#
AccentPhrase (アクセント句ごとの情報)。
このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては
validate()を参照。このクラスを使う関数は、不正な状態に対してInvalidQueryErrorを送出する。コンストラクト時には、不正な状態であるかの検証は行われない。
- accent: int#
アクセント箇所。
- is_interrogative: bool = False#
疑問系かどうか。
- validate() None#
このインスタンスが不正であるときエラーを返す。
不正であるとは、以下のいずれかの条件を満たすことである。
- Rust APIの
AccentPhrase型 としてデシリアライズ不可。 accentが負であるか、もしくは \(2^{64}-1\) (32ビットプラットフォームの場合 \(2^{32}-1\))を超過する。
- Rust APIの
morasもしくはpause_moraの要素のうちいずれかが 不正 。accentが0。
送出するエラーは
InvalidQueryError。また次の状態に対しては
WARNINGレベルのログを出す。将来的にはエラーになる予定。morasもしくはpause_moraの要素のうちいずれかが、警告が出る状態。
- class voicevox_core.AudioQuery#
AudioQuery (音声合成用のクエリ)。
このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては
validate()を参照。このクラスを使う関数は、不正な状態に対してInvalidQueryErrorを送出する。コンストラクト時には、不正な状態であるかの検証は行われない。
シリアライゼーションのサポートはされていない。詳細は データのシリアライゼーション を参照。
- accent_phrases: list[AccentPhrase]#
アクセント句の配列。
- speed_scale: float#
全体の話速。
- pitch_scale: float#
全体の音高。
- intonation_scale: float#
全体の抑揚。
- volume_scale: float#
全体の音量。
- pre_phoneme_length: float#
音声の前の無音時間。
- post_phoneme_length: float#
音声の後の無音時間。
- output_sampling_rate: int#
音声データの出力サンプリングレート。
- output_stereo: bool#
音声データをステレオ出力するか否か。
- kana: str | None = None#
[読み取り専用] AquesTalk風記法。
Synthesizer.create_audio_query()が返すもののみstrとなる。入力として のAudioQueryでは無視される。
- static from_accent_phrases(accent_phrases: list[AccentPhrase]) AudioQuery#
- validate() None#
このインスタンスが不正であるときエラーを返す。
不正であるとは、以下のいずれかの条件を満たすことである。
- Rust APIの
AudioQuery型 としてデシリアライズ不可。 output_sampling_rateが負であるか、もしくは \(2^{32}-1\) を超過する。
- Rust APIの
accent_phrasesの要素のうちいずれかが 不正 。output_sampling_rateが24000の倍数ではない、もしくは0(将来的に解消予定。cf. #762)。
送出するエラーは
InvalidQueryError。また次の状態に対しては
WARNINGレベルのログを出す。将来的にはエラーになる予定。accent_phrasesの要素のうちいずれかが警告が出る状態。speed_scaleがNaN、infinity、もしくは負。pitch_scaleがNaNもしくは±infinity。intonation_scaleがNaNもしくは±infinity。volume_scaleがNaN、infinity、もしくは負。pre_phoneme_lengthがNaN、infinity、もしくは負。post_phoneme_lengthがNaN、infinity、もしくは負。output_sampling_rateが24000以外の値(エラーと同様将来的に解消予定)。
- class voicevox_core.CharacterMeta#
キャラクター のメタ情報。
- name: str#
キャラクター名。
- speaker_uuid: str#
キャラクターのUUID。
- version: CharacterVersion#
キャラクターのバージョン。
- order: int | None = None#
キャラクターの順番。
CharacterMetaの列は、この値に対して昇順に並んでいるべきである。
- class voicevox_core.FrameAudioQuery#
フレームごとの音声合成用のクエリ。
このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては
validate()を参照。このクラスを使う関数は、不正な状態に対してInvalidQueryErrorを送出する。コンストラクト時には、不正な状態であるかの検証は行われない。
シリアライゼーションのサポートはされていない。詳細は データのシリアライゼーション を参照。
- f0: list[float]#
フレームごとの基本周波数。
- volume: list[float]#
フレームごとの音量。
- phonemes: list[FramePhoneme]#
音素のリスト。
- volume_scale: float#
全体の音量。
- output_sampling_rate: int#
音声データの出力サンプリングレート。
- output_stereo: bool#
音声データをステレオ出力するか否か。
- validate() None#
このインスタンスが不正であるときエラーを返す。
不正であるとは、以下のいずれかの条件を満たすことである。
- Rust APIの
FrameAudioQuery型 としてデシリアライズ不可。 f0の要素がNaN、infinity、もしくは負。volumeの要素がNaNもしくは±infinity。volume_scaleがNaN、infinity、もしくは負。output_sampling_rate以下の値をとる。0以下の値。\(2^{32}-1\) を超過する値。
24000の倍数以外 (将来的に解消予定。cf. #762)。
- Rust APIの
送出するエラーは
InvalidQueryError。
- class voicevox_core.FramePhoneme#
音素の情報。
このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては
validate()を参照。このクラスを使う関数は、不正な状態に対してInvalidQueryErrorを送出する。コンストラクト時には、不正な状態であるかの検証は行われない。
- phoneme: str#
音素。
- frame_length: int#
音素のフレーム長。
- note_id: NoteId | None = None#
音符のID。
- validate() None#
このインスタンスが不正であるときエラーを返す。
不正であるとは、以下の条件を満たすことである。
- Rust APIの
FramePhoneme型 としてデシリアライズ不可。 phonemeが音素として不正。frame_lengthが負であるか、もしくは \(2^{53}-1\) を超過する。
- Rust APIの
送出するエラーは
InvalidQueryError。
- class voicevox_core.Mora#
モーラ(子音+母音)ごとの情報。
このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては
validate()を参照。このクラスを使う関数は、不正な状態に対してInvalidQueryErrorを送出する。コンストラクト時には、不正な状態であるかの検証は行われない。
- text: str#
文字。
- vowel: str#
母音の音素。
- vowel_length: float#
母音の音長。
- pitch: float#
音高。
- consonant: str | None = None#
子音の音素。
- consonant_length: float | None = None#
子音の音長。
- validate() None#
このインスタンスが不正であるときエラーを返す。
不正であるとは、以下のいずれかの条件を満たすことである。
consonantとconsonant_lengthの有無が不一致。consonantが子音以外の音素であるか、もしくは音素として不正。vowelが子音であるか、もしくは音素として不正。
送出するエラーは
InvalidQueryError。また次の状態に対しては
WARNINGレベルのログを出す。将来的にはエラーになる予定。consonant_lengthがNaN、infinity、もしくは負。vowel_lengthがNaN、infinity、もしくは負。pitchがNaNもしくは±infinity。
- class voicevox_core.Note#
音符または休符。
このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては
validate()を参照。このクラスを使う関数は、不正な状態に対してInvalidQueryErrorを送出する。コンストラクト時には、不正な状態であるかの検証は行われない。
note = Note(45, "ファ", key=65) rest = Note(45, "")
- frame_length: int#
音符のフレーム長。
秒数に93.75をかけ、端数を調整して整数にしたもの。例として125BPM (Beats Per Minute)における一拍は:
93.75[フレーム/秒] / (125[拍/分] / 60[秒/分]) = 45[フレーム/拍]
ここで設定した値は分割された上で
FramePhoneme.frame_lengthに割り当てられる。分割処理の詳細は 子音の侵食 を参照。
- lyric: str#
歌詞。
音符の場合、一つのモーラを表すひらがな/カタカナ(例:
"ド","ファ")。休符の場合、空文字列。
- key: int | None = None#
音階。
音符の場合、MIDIのnote number(例: C4なら
60)。休符の場合、
None。
- id: NoteId | None = None#
ID。
FrameAudioQueryを生成するときにFramePhoneme.note_idにコピーされる。歌唱音声には影響しない。
- validate() None#
このインスタンスが不正であるときエラーを返す。
不正であるとは、以下のいずれかの条件を満たすことである。
- Rust APIの
Note型 としてデシリアライズ不可。 keyが負であるか、もしくは127を超過する。lyricが空文字列以外の、モーラとして不正な文字列。frame_lengthが負であるか、もしくは \(2^{53}-1\) を超過する。
- Rust APIの
送出するエラーは
InvalidQueryError。
- voicevox_core.NoteId#
音符のID。
- Parameters:
x (str)
- class voicevox_core.Score#
楽譜情報。
このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては
validate()を参照。このクラスを使う関数は、不正な状態に対してInvalidQueryErrorを送出する。コンストラクト時には、不正な状態であるかの検証は行われない。
Score( [ Note(15, ""), Note(45, "ド", key=60), Note(45, "レ", key=62), Note(45, "ミ", key=64), Note(15, ""), ], )
- validate() None#
このインスタンスが不正であるときエラーを返す。
不正であるとは、以下のいずれかの条件を満たすことである。
送出するエラーは
InvalidQueryError。
- class voicevox_core.StyleMeta#
スタイル のメタ情報。
- name: str#
スタイル名。
- order: int | None = None#
スタイルの順番。
CharacterMeta.stylesは、この値に対して昇順に並んでいるべきである。
- voicevox_core.StyleType: TypeAlias = Literal['talk', 'singing_teacher', 'frame_decode', 'sing'] | _Reserved#
スタイル に対応するモデルの種類。
値
説明
"talk"音声合成クエリの作成と音声合成が可能。
"singing_teacher"歌唱音声合成用のクエリの作成が可能。
"frame_decode"歌唱音声合成が可能。
"sing"歌唱音声合成用のクエリの作成と歌唱音声合成が可能。
_Reserved将来のために予約されている値。この値が存在することは決してない。
strのサブタイプであるため、StyleTypeをstrとして 扱うことは可能。_Reservedの存在により、例えば次のコードはPyright/Pylanceの型検査に通らない。これは意図的なデザインである。def _(style_type: StyleType) -> int: match style_type: case "talk": return 0 case "singing_teacher": return 1 case "frame_decode": return 2 case "sing": return 3
error: Function with declared return type "int" must return value on all code paths "None" is not assignable to "int" (reportReturnType)
strとして扱うことは可能。def _(style_type: StyleType): _: str = style_type # OK
- class voicevox_core.SupportedDevices#
ONNX Runtimeとして利用可能なデバイスの情報。
あくまでONNX Runtimeが対応しているデバイスの情報であることに注意。GPUが使える環境ではなかったとしても
cudaやdmlはTrueを示しうる。VOICEVOX CORE以外が作ることはできない。作ろうとした場合
TypeErrorとなる。- cpu: bool#
CPUが利用可能。
常に
True。
- cuda: bool#
CUDAが利用可能。
ONNX Runtimeの CUDA Execution Provider (
CUDAExecutionProvider)に対応する。必要な環境についてはそちらを参照。
- dml: bool#
DirectMLが利用可能。
ONNX Runtimeの DirectML Execution Provider (
DmlExecutionProvider)に対応する。必要な環境についてはそちらを参照。
- __post_init__(reserved: Never) None#
- class voicevox_core.UserDictWord#
ユーザー辞書の単語。
シリアライゼーションのサポートはされていない。詳細は データのシリアライゼーション を参照。
- surface: str#
言葉の表層形。
- pronunciation: str#
言葉の発音。
カタカナで表記する。
- accent_type: int#
アクセント型。
音が下がる場所を指す。
- word_type: UserDictWordType = 'COMMON_NOUN'#
品詞。
- priority: int = 5#
単語の優先度。
0から10までの整数。 数字が大きいほど優先度が高くなる。 1から9までの値を指定することを推奨する。
- __post_init__() None#
- voicevox_core.UserDictWordType: TypeAlias = Literal['PROPER_NOUN', 'COMMON_NOUN', 'VERB', 'ADJECTIVE', 'SUFFIX'] | _Reserved#
ユーザー辞書の単語の品詞。
値
説明
"PROPER_NOUN"固有名詞。
"COMMON_NOUN"一般名詞。
"VERB"動詞。
"ADJECTIVE"形容詞。
"SUFFIX"語尾。
_Reserved将来のために予約されている値。この値が存在することは決してない。
strのサブタイプであるため、UserDictWordTypeをstrとして 扱うことは可能。_Reservedの存在により、例えば次のコードはPyright/Pylanceの型検査に通らない。これは意図的なデザインである。def _(word_type: UserDictWordType) -> int: match word_type: case "PROPER_NOUN": return 0 case "COMMON_NOUN": return 1 case "VERB": return 2 case "ADJECTIVE": return 3 case "SUFFIX": return 4
error: Function with declared return type "int" must return value on all code paths "None" is not assignable to "int" (reportReturnType)
strとして扱うことは可能。def _(word_type: UserDictWordType): _: str = word_type # OK
- voicevox_core.VoiceModelId#
音声モデルID。
SynthesizerはこのIDをキーとして、音声モデルのロード・アンロードを行う。同じIDを持つ複数のVVMファイルがあるときは、ファイルとして新しい方を常に使うことが推奨される。 VOICEVOX/voicevox_vvm で管理されているVVMでは、次の方針が取られている。
VVMに含まれる声が変化せず、軽微な修正のみのときはIDを使い回してリリースする。
VVMに含まれる声が明確に変化するかもしくは削除されるような実質的な変更のときは、新しいIDを割り振ってリリースする。
これ以外は未定であり、更なるルールについては VOICEVOX/voicevox_vvm#19 で議論される予定。
- Parameters:
x (UUID)
- exception voicevox_core.AnalyzeTextError#
Bases:
Exception入力テキストの解析に失敗した。
- exception voicevox_core.GetSupportedDevicesError#
Bases:
Exceptionサポートされているデバイス情報取得に失敗した。
- exception voicevox_core.GpuSupportError#
Bases:
ExceptionGPUモードがサポートされていない。
- exception voicevox_core.IncompatibleQueriesError#
Bases:
ValueErrorFrameAudioQueryとScoreの組み合わせが不正。
- exception voicevox_core.InitInferenceRuntimeError#
Bases:
Exception推論ライブラリのロードまたは初期化ができなかった。
- exception voicevox_core.InvalidModelDataError#
Bases:
Exception無効なモデルデータ。
- exception voicevox_core.InvalidQueryError#
Bases:
ValueErrorAudioQuery、もしくはその一部が不正。
- exception voicevox_core.InvalidWordError#
Bases:
ValueErrorユーザー辞書の単語のバリデーションに失敗した。
- exception voicevox_core.LoadUserDictError#
Bases:
Exceptionユーザー辞書を読み込めなかった。
- exception voicevox_core.ModelAlreadyLoadedError#
Bases:
Exceptionすでに読み込まれている音声モデルを読み込もうとした。
- exception voicevox_core.ModelNotFoundError#
Bases:
KeyError音声モデルIDに対する音声モデルが見つからなかった。
- exception voicevox_core.NotLoadedOpenjtalkDictError#
Bases:
Exceptionopen_jtalk辞書ファイルが読み込まれていない。
- exception voicevox_core.OpenZipFileError#
Bases:
ExceptionZIPファイルを開くことに失敗した。
- exception voicevox_core.ParseKanaError#
Bases:
ValueErrorAquesTalk風記法のテキストの解析に失敗した。
- exception voicevox_core.ReadZipEntryError#
Bases:
ExceptionZIP内のファイルが読めなかった。
- exception voicevox_core.RunModelError#
Bases:
Exception推論に失敗した、もしくは推論結果が異常。
- exception voicevox_core.SaveUserDictError#
Bases:
Exceptionユーザー辞書を書き込めなかった。
- exception voicevox_core.StyleAlreadyLoadedError#
Bases:
Exceptionすでに読み込まれているスタイルを読み込もうとした。
- exception voicevox_core.StyleNotFoundError#
Bases:
KeyErrorスタイルIDに対するスタイルが見つからなかった。
- exception voicevox_core.UseUserDictError#
Bases:
ExceptionOpenJTalkのユーザー辞書の設定に失敗した。
- exception voicevox_core.WordNotFoundError#
Bases:
KeyErrorユーザー辞書に単語が見つからなかった。
- voicevox_core.__version__: str#
- voicevox_core.ensure_compatible(score: voicevox_core.Score, frame_audio_query: voicevox_core.FrameAudioQuery) None#
与えられた 楽譜 と 歌唱音声合成用のクエリ の組み合わせが、基本周波数と音量の生成に利用できるかどうかを確認する。
次のうちどれかを満たすなら
IncompatibleQueriesErrorを送出する。