Transformers documentation
Wav2Vec2Phoneme
このモデルは2021年9月23日にHF papersで公開され、2021年12月17日にHugging Face Transformersに貢献されました。
Wav2Vec2Phoneme
概要
Wav2Vec2Phoneme モデルは、Qiantong Xu、Alexei Baevski、Michael Auli によって、Simple and Effective Zero-shot Cross-lingual Phoneme Recognition (Xu et al., 2021) で提案されました。
論文の抄録は以下の通りです。
自己学習、自己教師あり事前学習、教師なし学習における最近の進歩により、ラベル付きデータなしで高性能な音声認識システムが実現可能になりました。しかし、多くの場合、関連する言語のラベル付きデータが存在するにもかかわらず、これらの手法では活用されていません。本論文では、多言語で事前学習された wav2vec 2.0 モデルをファインチューニングして、未見の言語の文字起こしを行うことで、ゼロショットの言語間転移学習に関する先行研究を拡張します。これは、発音特徴を用いて訓練言語の音素をターゲット言語にマッピングすることで実現されます。実験により、この単純な手法は、タスク固有のアーキテクチャを導入し、単一言語で事前学習されたモデルの一部のみを使用していた先行研究を大幅に上回ることが示されました。
関連するチェックポイントは、https://huggingface.co/models?other=phoneme-recognition で確認できます。
このモデルは patrickvonplaten によって提供されました。
元のコードはこちらで確認できます。
使用のコツ
- Wav2Vec2Phonemeは、Wav2Vec2とまったく同じアーキテクチャを使用しています。
- Wav2Vec2Phonemeは、音声信号の生波形に対応するfloat配列を受け取る音声モデルです。
- Wav2Vec2Phoneme モデルは connectionist temporal classification (CTC) を用いて学習されているため、モデルの出力は Wav2Vec2PhonemeCTCTokenizer を使用してデコードする必要があります。
- Wav2Vec2Phoneme は、複数の言語を同時にファインチューニングし、一度のフォワードパスで未見の言語を音素のシーケンスにデコードできます
- デフォルトでは、モデルは音素のシーケンスを出力します。音素を単語のシーケンスに変換するには、辞書と言語モデルを利用する必要があります。
Wav2Vec2Phoneme のアーキテクチャは Wav2Vec2 モデルに基づいており、API の参考として
Wav2Vec2のドキュメントページを参照してください。ただし、トークナイザーについては除きます。
Wav2Vec2PhonemeCTCTokenizer
class transformers.Wav2Vec2PhonemeCTCTokenizer
< source >( vocab_filebos_token = '<s>'eos_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'phone_delimiter_token = ' 'word_delimiter_token = Nonedo_phonemize = Truephonemizer_lang = 'en-us'phonemizer_backend = 'espeak'**kwargs )
パラメータ
- vocab_file (
str) — 語彙を含むファイル。 - bos_token (
str、任意、デフォルトは"<s>") — 文の開始トークンです。 - eos_token (
str、任意、デフォルトは"</s>") — 文の終了トークンです。 - unk_token (
str、任意、デフォルトは"<unk>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。 - pad_token (
str、任意、デフォルトは"<pad>") — パディングに使用されるトークンです。例えば、長さが異なるシーケンスをバッチ処理する際に使用します。 - do_phonemize (
bool、省略可、デフォルトはTrue) — トークナイザーが入力を音素化すべきかどうかを指定します。音素のシーケンスをトークナイザーに渡す場合のみ、do_phonemizeをFalseに設定する必要があります。 - phonemizer_lang (
str、任意、デフォルトは"en-us") — トークナイザーが入力テキストを音素化すべき音素集合の言語です。 - phonemizer_backend (
str、任意。デフォルトは"espeak") — phonemizer ライブラリで使用されるバックエンドの音素化ライブラリです。デフォルトはespeak-ngです。詳細については、phonemizer パッケージを参照してください。 - **kwargs — PreTrainedTokenizer に渡される追加のキーワード引数
Wav2Vec2PhonemeCTC トークナイザーを構築します。
このトークナイザーは、PreTrainedTokenizer を継承しており、主要なメソッドの一部が含まれています。これらのメソッドに関する詳細については、スーパークラスを参照してください。
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
パラメータ
- text (
str、list[str]、list[list[str]]、任意) — エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、文字列または文字列のリスト(事前トークン化済み文字列)であることができます。シーケンスが文字列のリスト(事前トークン化済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - text_pair (
str、list[str]、list[list[str]]、任意) — エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、文字列または文字列のリスト(事前トークン化された文字列)であることができます。シーケンスが文字列のリスト(事前トークン化済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - text_target (
str、list[str]、list[list[str]]、任意) — ターゲットテキストとしてエンコードされるシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト(プレトークナイズ済み文字列)であることができます。シーケンスが文字列のリスト(プレトークナイズ済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - text_pair_target (
str、list[str]、list[list[str]]、任意) — ターゲットテキストとしてエンコードされるシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト(プレトークナイズ済み文字列)であることができます。シーケンスが文字列のリスト(プレトークナイズ済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - tokenizer_kwargs (
dict[str, Any]、省略可) — トークナイザーに渡す追加の kwargs です。これらは明示的なパラメータおよびその他の kwargs とマージされますが、明示的なパラメータが優先されます。 - add_special_tokens (
bool、省略可、デフォルトはTrue) — シーケンスをエンコードする際に特殊トークンを追加するかどうかを指定します。これは、入力 ID に自動的に追加されるトークンを定義する基盤となるPretrainedTokenizerBase.build_inputs_with_special_tokens関数を使用します。bosやeosトークンを自動的に追加したい場合に便利です。 - padding (
bool,strまたは PaddingStrategy, 省略可, デフォルトはFalse) — パディングの有効化と制御を行います。以下の値を受け入れます:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool,strまたは TruncationStrategy, 省略可能, デフォルトはFalse) — 切り詰めを有効にし、制御します。以下の値を受け取ります:Trueまたは'longest_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。この場合、トークン単位で切り詰めが行われ、ペアのシーケンス(またはペアのバッチ)が提供されている場合は、ペアの中で最も長いシーケンスから1トークンずつ削除します。'only_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れることのできる最大入力長まで切り詰めます。この設定では、ペアのシーケンス(またはペアのバッチ)が提供された場合のみ、ペアの最初のシーケンスだけが切り詰められます。'only_second': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長まで切り詰めます。このモードでは、シーケンスのペア(またはペアのバッチ)が提供された場合のみ、ペアの2番目のシーケンスが切り詰められます。Falseまたは'do_not_truncate'(デフォルト): トランケーションを行いません(つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります)。
- max_length (
int, 省略可能) — truncation/padding パラメータのいずれかによって使用される最大長を制御します。未設定のまま、または
Noneに設定されている場合、truncation/padding パラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合(XLNet など)、最大長への truncation/padding は無効になります。 - stride (
int、省略可能、デフォルトは 0) —max_lengthとともに数値が設定されている場合、return_overflowing_tokens=Trueで返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複を確保します。この引数の値は、重複するトークンの数を定義します。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - pad_to_multiple_of (
int, 任意) — 設定すると、指定された値の倍数にシーケンスをパディングします。paddingが有効になっている必要があります。 これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': Numpy のnp.ndarrayオブジェクトを返します。
- return_token_type_ids (
bool, 省略可能) — トークンタイプIDを返すかどうか。デフォルトのままにすると、特定のトークナイザーのデフォルトに従ってトークンタイプIDを返します。これはreturn_outputs属性で定義されます。 - return_attention_mask (
bool, 省略可能) — attention mask を返すかどうか。デフォルトのままにすると、return_outputs属性によって定義される、特定の tokenizer のデフォルトに従って attention mask を返します。 - return_overflowing_tokens (
bool、任意、デフォルトはFalse) — 溢れ出したトークンシーケンスを返すかどうかを指定します。入力 ID のシーケンスのペア(またはペアのバッチ)がtruncation_strategy = longest_firstまたはTrueとともに提供された場合、溢れ出したトークンを返す代わりにエラーが発生します。 - return_special_tokens_mask (
bool、省略可能、デフォルトはFalse) — 特殊トークンのマスク情報を返すかどうかを指定します。 - return_offsets_mapping (
bool, 省略可能, デフォルトはFalse) — 各トークンについて(char_start, char_end)を返すかどうか。この機能は、PreTrainedTokenizerFast を継承する高速トークナイザーでのみ利用可能です。Python のトークナイザーを使用している場合、このメソッドは
NotImplementedErrorを送出します。 - return_length (
bool、任意、デフォルトはFalse) — エンコードされた入力の長さを返すかどうかを指定します。 - verbose (
bool、任意、デフォルトはTrue) — より多くの情報や警告を表示するかどうかを指定します。 - **kwargs —
self.tokenize()メソッドに渡されます
戻り値
以下のフィールドを持つBatchEncoding:
-
input_ids — モデルに与えるトークン ID のリスト。
-
token_type_ids — モデルに渡すトークンタイプIDのリスト(
return_token_type_ids=Trueの場合、またはself.model_input_namesに“token_type_ids”が含まれている場合)。 -
attention_mask — モデルがどのトークンに注意を向けるべきかを指定するインデックスのリスト(
return_attention_mask=Trueの場合、またはself.model_input_namesに “attention_mask” が含まれている場合)。 -
overflowing_tokens — 溢れ出したトークンシーケンスのリスト(
max_lengthが指定され、return_overflowing_tokens=Trueの場合)。 -
num_truncated_tokens — トークンが切り詰められた数(
max_lengthが指定され、return_overflowing_tokens=Trueの場合)。 -
special_tokens_mask — 0 と 1 のリスト。1 は追加された特殊トークンを、0 は通常のシーケンストークンを示します(
add_special_tokens=Trueかつreturn_special_tokens_mask=Trueの場合)。 -
length — 入力データの長さ(
return_length=Trueの場合)
1 つ以上のシーケンス、または 1 つ以上のシーケンスのペアをトークナイズし、モデル用に準備するためのメインメソッドです。
batch_decode
< source >( sequences: typing.Union[list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = Noneoutput_char_offsets: bool = False**kwargs ) → list[str] or ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
パラメータ
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — トークン化された入力 ID のリスト。__call__メソッドを使用して取得できます。 - skip_special_tokens (
bool、省略可、デフォルトはFalse) — デコーディング時に特殊トークンを除去するかどうかを指定します。 - clean_up_tokenization_spaces (
bool、任意) — トークン化のスペースを整理するかどうか。 - output_char_offsets (
bool, 省略可, デフォルトはFalse) — 文字オフセットを出力するかどうか。文字オフセットは、サンプリングレートとモデルのダウンサンプリングレートを組み合わせて使用することで、転写された文字のタイムスタンプを計算できます。~models.wav2vec2.tokenization_wav2vec2.decodeの例を確認し、output_word_offsetsの使い方を理解してください。~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decodeは、音素およびバッチ出力に対して同様に動作します。 - kwargs (追加のキーワード引数、任意) — 基盤となるモデル固有のデコードメソッドに渡されます。
戻り値
list[str] または ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
デコードされた文。output_char_offsets == Trueの場合、~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutputになります。
decode を呼び出して、トークン ID のリストのリストを文字列のリストに変換します。
decode
< source >( token_ids: typing.Union[int, list[int], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = Noneoutput_char_offsets: bool = False**kwargs ) → str or ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
パラメータ
- token_ids (
Union[int, list[int], np.ndarray, torch.Tensor]) — トークン化された入力 ID のリスト。__call__メソッドを使用して取得できます。 - skip_special_tokens (
bool、省略可、デフォルトはFalse) — デコーディング時に特殊トークンを除去するかどうかを指定します。 - clean_up_tokenization_spaces (
bool、任意) — トークン化のスペースを整理するかどうか。 - output_char_offsets (
bool, 省略可, デフォルトはFalse) — 文字オフセットを出力するかどうか。文字オフセットは、サンプリングレートとモデルのダウンサンプリングレートを組み合わせて使用することで、転写された文字のタイムスタンプを計算できます。~models.wav2vec2.tokenization_wav2vec2.decodeの例を確認し、output_word_offsetsの使い方を理解してください。~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decodeも、音素に対して同じように動作します。 - kwargs (追加のキーワード引数、任意) — 基盤となるモデル固有のデコードメソッドに渡されます。
戻り値
str または ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
デコードされた文。output_char_offsets == Trueの場合、~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutputになります。
トークナイザーと語彙を使用して、文字列内のIDのシーケンスを変換します。特殊トークンの削除や、トークン化スペースのクリーンアップなどのオプションが利用できます。
self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)) を実行するのと似ています。