Transformers documentation
Wav2Vec2Phoneme
이 모델은 2021-09-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은 여러 언어를 동시에 fine-tune할 수 있으며, 한 번의 forward pass로 확인하지 않은 언어를 음소(phoneme) 시퀀스로 디코딩할 수 있습니다
- 기본적으로 모델은 음소(phoneme) 시퀀스를 출력합니다. 음소를 단어 시퀀스로 변환하려면 사전과 언어 모델을 활용해야 합니다.
Wav2Vec2Phoneme의 아키텍처는 Wav2Vec2 모델에 기반하며, API 참고를 위해
Wav2Vec2의 문서 페이지를 확인하세요. 토크나이저를 제외합니다.
Wav2Vec2PhonemeCTCTokenizer
클래스 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>") — 패딩에 사용되는 토큰입니다. 예를 들어, 길이가 다른 시퀀스를 배치(batching)할 때 사용됩니다. - do_phonemize (
bool, 선택 사항, 기본값True) — 토크나이저가 입력을 음소화(phonetize)할지 여부를 지정합니다. 토크나이저에 음소(phoneme) 시퀀스가 전달되는 경우에만do_phonemize를False로 설정해야 합니다. - phonemizer_lang (
str, 선택 사항, 기본값"en-us") — 토크나이저가 입력 텍스트를 음소화할 때 사용할 음소 집합의 언어입니다. - phonemizer_backend (
str, 선택 사항. 기본값은"espeak") — phonemizer 라이브러리가 사용할 백엔드 음운 변환 라이브러리입니다. 기본값은espeak-ng입니다. 자세한 내용은 phonemizer 패키지를 참조하세요. - **kwargs — PreTrainedTokenizer에 전달되는 추가 키워드 인자
Wav2Vec2PhonemeCTC 토크나이저를 생성합니다.
이 tokenizer는 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인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 경우 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍 중 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.'only_first':max_length인수로 지정된 최대 길이 또는 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘립니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 쌍의 첫 번째 시퀀스만 잘립니다.'only_second':max_length인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.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이 활성화되어 있어야 합니다. 이는 Volta에서>= 7.5의 컴퓨트 기능을 가진 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용합니다. - padding_side (
str, 선택 사항) — 모델에 패딩을 적용할 쪽입니다. [‘right’, ‘left’] 중에서 선택해야 합니다. 기본값은 동일한 이름의 클래스 속성에서 가져옵니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': Numpynp.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인 경우)
하나 이상의 시퀀스 또는 하나 이상의 시퀀스 쌍을 토큰화하여 모델에 맞게 준비하는 주요 메서드입니다.
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는 음소(phoneme)와 배치된 출력에 대해 유사하게 동작합니다. - kwargs (추가 키워드 인자, 선택 사항) — 기저 모델의 특정 decode 메서드에 전달됩니다.
반환값
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도 음소(phoneme)에 대해 동일한 방식으로 동작합니다. - kwargs (추가 키워드 인자, 선택 사항) — 기저 모델의 특정 decode 메서드에 전달됩니다.
반환값
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))를 실행하는 것과 유사합니다.