voicevox_core#

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのコア。

Submodules#

Attributes#

AccelerationMode

ハードウェアアクセラレーションモードを設定する設定値。

CharacterVersion

キャラクター のバージョン。

NoteId

音符のID。

StyleId

スタイルID。

StyleType

スタイル に対応するモデルの種類。

UserDictWordType

ユーザー辞書の単語の品詞。

VoiceModelId

音声モデルID。

__version__

Exceptions#

AnalyzeTextError

入力テキストの解析に失敗した。

GetSupportedDevicesError

サポートされているデバイス情報取得に失敗した。

GpuSupportError

GPUモードがサポートされていない。

IncompatibleQueriesError

FrameAudioQueryとScoreの組み合わせが不正。

InitInferenceRuntimeError

推論ライブラリのロードまたは初期化ができなかった。

InvalidModelDataError

無効なモデルデータ。

InvalidQueryError

AudioQuery、もしくはその一部が不正。

InvalidWordError

ユーザー辞書の単語のバリデーションに失敗した。

LoadUserDictError

ユーザー辞書を読み込めなかった。

ModelAlreadyLoadedError

すでに読み込まれている音声モデルを読み込もうとした。

ModelNotFoundError

音声モデルIDに対する音声モデルが見つからなかった。

NotLoadedOpenjtalkDictError

open_jtalk辞書ファイルが読み込まれていない。

OpenZipFileError

ZIPファイルを開くことに失敗した。

ParseKanaError

AquesTalk風記法のテキストの解析に失敗した。

ReadZipEntryError

ZIP内のファイルが読めなかった。

RunModelError

推論に失敗した、もしくは推論結果が異常。

SaveUserDictError

ユーザー辞書を書き込めなかった。

StyleAlreadyLoadedError

すでに読み込まれているスタイルを読み込もうとした。

StyleNotFoundError

スタイルIDに対するスタイルが見つからなかった。

UseUserDictError

OpenJTalkのユーザー辞書の設定に失敗した。

WordNotFoundError

ユーザー辞書に単語が見つからなかった。

Classes#

AccentPhrase

AccentPhrase (アクセント句ごとの情報)。

AudioQuery

AudioQuery (音声合成用のクエリ)。

CharacterMeta

キャラクター のメタ情報。

FrameAudioQuery

フレームごとの音声合成用のクエリ。

FramePhoneme

音素の情報。

Mora

モーラ(子音+母音)ごとの情報。

Note

音符または休符。

Score

楽譜情報。

StyleMeta

スタイル のメタ情報。

SupportedDevices

ONNX Runtimeとして利用可能なデバイスの情報。

UserDictWord

ユーザー辞書の単語。

Functions#

ensure_compatible(→ None)

与えられた 楽譜歌唱音声合成用のクエリ の組み合わせが、基本周波数と音量の生成に利用できるかどうかを確認する。

Package Contents#

voicevox_core.AccelerationMode: TypeAlias = Literal['AUTO', 'CPU', 'GPU'] | _Reserved#

ハードウェアアクセラレーションモードを設定する設定値。

説明

"AUTO"

実行環境に合った適切なハードウェアアクセラレーションモードを選択する。

"CPU"

ハードウェアアクセラレーションモードを”CPU”に設定する。

"GPU"

ハードウェアアクセラレーションモードを”GPU”に設定する。

_Reserved

将来のために予約されている値。この値が存在することは決してない。 str のサブタイプであるため、 AccelerationModestr として 扱うことは可能。

_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 を送出する。

コンストラクト時には、不正な状態であるかの検証は行われない。

moras: list[Mora]#

モーラの配列。

accent: int#

アクセント箇所。

pause_mora: Mora | None = None#

後ろに無音を付けるかどうか。

is_interrogative: bool = False#

疑問系かどうか。

validate() None#

このインスタンスが不正であるときエラーを返す。

不正であるとは、以下のいずれかの条件を満たすことである。

送出するエラーは InvalidQueryError

また次の状態に対しては WARNING レベルのログを出す。将来的にはエラーになる予定。

  • moras もしくは pause_mora の要素のうちいずれかが、警告が出る状態。

  • accentmoras の数を超過している。

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#

このインスタンスが不正であるときエラーを返す。

不正であるとは、以下のいずれかの条件を満たすことである。

送出するエラーは InvalidQueryError

また次の状態に対しては WARNING レベルのログを出す。将来的にはエラーになる予定。

class voicevox_core.CharacterMeta#

キャラクター のメタ情報。

name: str#

キャラクター名。

styles: list[StyleMeta]#

キャラクターに属するスタイル。

speaker_uuid: str#

キャラクターのUUID。

version: CharacterVersion#

キャラクターのバージョン。

order: int | None = None#

キャラクターの順番。

CharacterMeta の列は、この値に対して昇順に並んでいるべきである。

voicevox_core.CharacterVersion#

キャラクター のバージョン。

Parameters:

x (str)

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#

このインスタンスが不正であるときエラーを返す。

不正であるとは、以下のいずれかの条件を満たすことである。

送出するエラーは InvalidQueryError

class voicevox_core.FramePhoneme#

音素の情報。

このクラスは不正な状態を表現しうる。どのような状態が不正なのかについては validate() を参照。このクラスを使う関数は、不正な状態に対して InvalidQueryError を送出する。

コンストラクト時には、不正な状態であるかの検証は行われない。

phoneme: str#

音素。

frame_length: int#

音素のフレーム長。

note_id: NoteId | None = None#

音符のID。

validate() None#

このインスタンスが不正であるときエラーを返す。

不正であるとは、以下の条件を満たすことである。

送出するエラーは 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#

このインスタンスが不正であるときエラーを返す。

不正であるとは、以下のいずれかの条件を満たすことである。

  • consonantconsonant_length の有無が不一致。

  • consonant が子音以外の音素であるか、もしくは音素として不正。

  • vowel が子音であるか、もしくは音素として不正。

送出するエラーは InvalidQueryError

また次の状態に対しては WARNING レベルのログを出す。将来的にはエラーになる予定。

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\) を超過する。

  • keyNone かつ lyric"" 以外。

  • keyint かつ lyric""

送出するエラーは 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, ""),
    ],
)
notes: list[Note]#

音符のリスト。

validate() None#

このインスタンスが不正であるときエラーを返す。

不正であるとは、以下のいずれかの条件を満たすことである。

  • notes の要素のうちいずれかが 不正

  • notes が空であるか、もしくは先頭が音符。

送出するエラーは InvalidQueryError

voicevox_core.StyleId#

スタイルID。

VOICEVOXにおける、ある キャラクター のある スタイル を指す。

Parameters:

x (int)

class voicevox_core.StyleMeta#

スタイル のメタ情報。

name: str#

スタイル名。

id: StyleId#

スタイルID。

type: StyleType = 'talk'#

スタイルに対応するモデルの種類。

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 のサブタイプであるため、 StyleTypestr として 扱うことは可能。

_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が使える環境ではなかったとしても cudadmlTrue を示しうる。

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 のサブタイプであるため、 UserDictWordTypestr として 扱うことは可能。

_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: Exception

GPUモードがサポートされていない。

exception voicevox_core.IncompatibleQueriesError#

Bases: ValueError

FrameAudioQueryとScoreの組み合わせが不正。

exception voicevox_core.InitInferenceRuntimeError#

Bases: Exception

推論ライブラリのロードまたは初期化ができなかった。

exception voicevox_core.InvalidModelDataError#

Bases: Exception

無効なモデルデータ。

exception voicevox_core.InvalidQueryError#

Bases: ValueError

AudioQuery、もしくはその一部が不正。

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: Exception

open_jtalk辞書ファイルが読み込まれていない。

exception voicevox_core.OpenZipFileError#

Bases: Exception

ZIPファイルを開くことに失敗した。

exception voicevox_core.ParseKanaError#

Bases: ValueError

AquesTalk風記法のテキストの解析に失敗した。

exception voicevox_core.ReadZipEntryError#

Bases: Exception

ZIP内のファイルが読めなかった。

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: Exception

OpenJTalkのユーザー辞書の設定に失敗した。

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 を送出する。

  • score不正

  • frame_audio_query不正

  • score が表す音素ID列と、 frame_audio_query.phonemes が表す音素ID列が等しくない。ただし異なる音素の表現が同一のIDを表すことがある。