Transformers documentation

Wav2Vec2Phoneme

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Mô hình này được công bố trên HF papers vào ngày 23-09-2021 và được đóng góp cho Hugging Face Transformers vào ngày 17-12-2021.

Wav2Vec2Phoneme

Tổng quan

Mô hình Wav2Vec2Phoneme được đề xuất trong Simple and Effective Zero-shot Cross-lingual Phoneme Recognition (Xu et al., 2021) bởi Qiantong Xu, Alexei Baevski, Michael Auli.

Tóm tắt từ bài báo như sau:

Những tiến bộ gần đây trong tự huấn luyện, tiền huấn luyện tự giám sát và học không giám sát đã cho phép xây dựng các hệ thống nhận dạng giọng nói hoạt động hiệu quả mà không cần bất kỳ dữ liệu có nhãn nào. Tuy nhiên, trong nhiều trường hợp, dữ liệu có nhãn cho các ngôn ngữ liên quan là có sẵn nhưng chưa được các phương pháp này khai thác. Bài báo này mở rộng công trình trước đó về chuyển giao học đa ngôn ngữ zero-shot bằng cách tinh chỉnh mô hình wav2vec 2.0 được tiền huấn luyện đa ngôn ngữ để chuyển tự các ngôn ngữ chưa từng thấy. Điều này được thực hiện bằng cách ánh xạ các âm vị của các ngôn ngữ huấn luyện sang ngôn ngữ đích sử dụng các đặc trưng phát âm. Các thí nghiệm cho thấy phương pháp đơn giản này vượt trội đáng kể so với các công trình trước đó, vốn đã giới thiệu các kiến trúc đặc thù cho tác vụ và chỉ sử dụng một phần của mô hình được tiền huấn luyện đơn ngôn ngữ.

Các checkpoint liên quan có thể được tìm thấy tại https://huggingface.co/models?other=phoneme-recognition.

Mô hình này được đóng góp bởi patrickvonplaten

Mã nguồn gốc có thể được tìm thấy tại đây.

Mẹo sử dụng

  • Wav2Vec2Phoneme sử dụng kiến trúc hoàn toàn giống với Wav2Vec2
  • Wav2Vec2Phoneme là một mô hình giọng nói nhận vào một mảng float tương ứng với dạng sóng thô của tín hiệu giọng nói.
  • Mô hình Wav2Vec2Phoneme được huấn luyện bằng phân loại thời gian liên kết (CTC) nên đầu ra của mô hình phải được giải mã bằng Wav2Vec2PhonemeCTCTokenizer.
  • Wav2Vec2Phoneme có thể được tinh chỉnh trên nhiều ngôn ngữ cùng lúc và giải mã các ngôn ngữ chưa từng thấy trong một lần truyền tiến duy nhất thành một chuỗi các âm vị
  • Mặc định, mô hình xuất ra một chuỗi các âm vị. Để chuyển đổi các âm vị thành một chuỗi các từ, bạn cần sử dụng từ điển và mô hình ngôn ngữ.

Kiến trúc của Wav2Vec2Phoneme dựa trên mô hình Wav2Vec2, để tham khảo API, hãy xem trang tài liệu của Wav2Vec2, ngoại trừ tokenizer.

Wav2Vec2PhonemeCTCTokenizer

lớp transformers.Wav2Vec2PhonemeCTCTokenizer

< >

( 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 )

Tham số

  • vocab_file (str) — Tệp chứa từ vựng.
  • bos_token (str, tùy chọn, mặc định là "<s>") — Token đánh dấu đầu câu.
  • eos_token (str, tùy chọn, mặc định là "</s>") — Token kết thúc câu.
  • unk_token (str, tùy chọn, mặc định là "<unk>") — Token không xác định. Một token không có trong từ vựng sẽ không thể được chuyển đổi thành ID và sẽ được gán thành token này thay thế.
  • pad_token (str, tùy chọn, mặc định là "<pad>") — Token được sử dụng để đệm, chẳng hạn khi xử lý các lô (batch) gồm các chuỗi có độ dài khác nhau.
  • do_phonemize (bool, tùy chọn, mặc định là True) — Xác định xem bộ phân từ có nên chuyển đổi đầu vào thành chuỗi âm vị hay không. Chỉ khi một chuỗi âm vị được truyền vào bộ phân từ, do_phonemize mới nên được đặt thành False.
  • phonemizer_lang (str, tùy chọn, mặc định là "en-us") — Ngôn ngữ của bộ phoneme mà tokenizer cần dùng để chuyển văn bản đầu vào thành phoneme.
  • phonemizer_backend (str, tùy chọn. mặc định là "espeak") — Thư viện phonetization backend sẽ được sử dụng bởi thư viện phonemizer. Mặc định là espeak-ng. Xem gói phonemizer để biết thêm thông tin.
  • **kwargs — Các đối số từ khóa bổ sung được truyền đến PreTrainedTokenizer

Tạo một tokenizer Wav2Vec2PhonemeCTC.

Tokenizer này kế thừa từ PreTrainedTokenizer, bao gồm một số phương thức chính. Người dùng nên tham khảo lớp cha để biết thêm thông tin về các phương thức này.

__call__

< >

( 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

Tham số

  • text (str, list[str], list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tiền mã hóa). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (tiền mã hóa), bạn phải đặt is_split_into_words=True (để loại bỏ sự mơ hồ với một lô các chuỗi).
  • text_pair (str, list[str], list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặt is_split_into_words=True (để loại bỏ sự mơ hồ với một lô các chuỗi).
  • text_target (str, list[str], list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặt is_split_into_words=True (để loại bỏ sự mơ hồ với một lô các chuỗi).
  • text_pair_target (str, list[str], list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặt is_split_into_words=True (để loại bỏ sự mơ hồ với một lô các chuỗi).
  • tokenizer_kwargs (dict[str, Any], tùy chọn) — Các kwargs bổ sung để truyền cho tokenizer. Chúng sẽ được gộp với các tham số tường minh và các kwargs khác, trong đó các tham số tường minh có độ ưu tiên cao hơn.
  • add_special_tokens (bool, tùy chọn, mặc định là True) — Có thêm các token đặc biệt khi mã hóa các chuỗi hay không. Điều này sẽ sử dụng hàm PretrainedTokenizerBase.build_inputs_with_special_tokens bên dưới, hàm này xác định các token nào được thêm tự động vào các id đầu vào. Điều này hữu ích nếu bạn muốn thêm các token bos hoặc eos một cách tự động.
  • padding (bool, str hoặc PaddingStrategy, tùy chọn, mặc định là False) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:
    • True hoặc 'longest': Lấp đầy (pad) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ cung cấp một chuỗi duy nhất).
    • 'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham số max_length hoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.
    • False hoặc 'do_not_pad' (mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
  • truncation (bool, str hoặc TruncationStrategy, tùy chọn, mặc định là False) — Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:
    • True hoặc 'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham số max_length hoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng token, loại bỏ một token từ chuỗi dài nhất trong cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.
    • 'only_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham số max_length hoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi đầu tiên của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.
    • 'only_second': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham số max_length hoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi thứ hai của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.
    • False hoặc 'do_not_truncate' (mặc định): Không cắt bớt (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa cho phép của mô hình).
  • max_length (int, tuỳ chọn) — Kiểm soát độ dài tối đa được sử dụng bởi một trong các tham số cắt/giữ chỗ (truncation/padding).

    Nếu không được đặt hoặc được đặt thành None, tham số này sẽ sử dụng độ dài tối đa định trước của mô hình nếu một trong các tham số cắt/giữ chỗ yêu cầu độ dài tối đa. Nếu mô hình không có độ dài đầu vào tối đa cụ thể (như XLNet), việc cắt/giữ chỗ đến độ dài tối đa sẽ bị vô hiệu hóa.

  • stride (int, tùy chọn, mặc định là 0) — Nếu được đặt thành một số cùng với max_length, các token tràn ra được trả về khi return_overflowing_tokens=True sẽ chứa một số token từ cuối của chuỗi bị cắt ngắn được trả về để tạo ra một phần chồng lấn giữa các chuỗi bị cắt ngắn và các chuỗi tràn ra. Giá trị của đối số này xác định số lượng token chồng lấn.
  • is_split_into_words (bool, tùy chọn, mặc định là False) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thành True, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token.
  • pad_to_multiple_of (int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Yêu cầu padding phải được kích hoạt. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán >= 7.5 (Volta).
  • padding_side (str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên.
  • return_tensors (str hoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor thay vì danh sách các số nguyên Python. Các giá trị chấp nhận được là:
    • 'pt': Trả về các đối tượng torch.Tensor của PyTorch.
    • 'np': Trả về các đối tượng Numpy np.ndarray.
  • return_token_type_ids (bool, tuỳ chọn) — Có trả về token type IDs hay không. Nếu để mặc định, sẽ trả về token type IDs theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tính return_outputs .

    ID loại token là gì?

  • return_attention_mask (bool, tuỳ chọn) — Có trả về attention mask hay không. Nếu để mặc định, sẽ trả về attention mask theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tính return_outputs .

    Mặt nạ chú ý là gì?

  • return_overflowing_tokens (bool, tùy chọn, mặc định là False) — Có trả về các chuỗi token tràn hay không. Nếu một cặp chuỗi input ids (hoặc một batch các cặp) được cung cấp với truncation_strategy = longest_first hoặc True, một lỗi sẽ được ném thay vì trả về các token tràn.
  • return_special_tokens_mask (bool, tùy chọn, mặc định là False) — Có trả về thông tin mặt nạ (mask) cho các token đặc biệt hay không.
  • return_offsets_mapping (bool, tuỳ chọn, mặc định là False) — Có trả về (char_start, char_end) cho từng token hay không.

    Tính năng này chỉ khả dụng trên các bộ phân từ nhanh kế thừa từ PreTrainedTokenizerFast; nếu sử dụng bộ phân từ của Python, phương thức này sẽ gây ra NotImplementedError.

  • return_length (bool, tùy chọn, mặc định là False) — Có trả về độ dài của các đầu vào đã mã hóa hay không.
  • verbose (bool, tùy chọn, mặc định là True) — Có in thêm thông tin và cảnh báo hay không.
  • **kwargs — được truyền đến phương thức self.tokenize()

Trả về

BatchEncoding

Một BatchEncoding với các trường sau:

  • input_ids — Danh sách các id token để đưa vào mô hình.

    ID đầu vào là gì?

  • token_type_ids — Danh sách các id loại token để đưa vào mô hình (khi return_token_type_ids=True hoặc nếu “token_type_ids” nằm trong self.model_input_names).

    ID loại token là gì?

  • attention_mask — Danh sách các chỉ số chỉ định những token nào nên được mô hình chú ý đến (khi return_attention_mask=True hoặc nếu “attention_mask” nằm trong self.model_input_names).

    Mặt nạ chú ý là gì?

  • overflowing_tokens — Danh sách các chuỗi token bị tràn (khi max_length được chỉ định và return_overflowing_tokens=True).

  • num_truncated_tokens — Số lượng token bị cắt bỏ (khi có chỉ định max_length và return_overflowing_tokens=True).

  • special_tokens_mask — Danh sách các số 0 và 1, trong đó 1 chỉ định các token đặc biệt được thêm vào và 0 chỉ định các token chuỗi thông thường (khi add_special_tokens=True và return_special_tokens_mask=True).

  • length — Độ dài của các đầu vào (khi return_length=True)

Phương thức chính để mã hóa token và chuẩn bị cho mô hình một hoặc nhiều chuỗi, hoặc một hoặc nhiều cặp chuỗi.

batch_decode

< >

( 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

Tham số

  • sequences (Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — Danh sách các id đầu vào đã được token hóa. Có thể lấy được bằng cách sử dụng phương thức __call__.
  • skip_special_tokens (bool, tùy chọn, mặc định là False) — Có loại bỏ các token đặc biệt trong quá trình giải mã hay không.
  • clean_up_tokenization_spaces (bool, tùy chọn) — Có dọn dẹp khoảng trắng trong token hóa hay không.
  • output_char_offsets (bool, tuỳ chọn, mặc định là False) — Có xuất offset ký tự hay không. Offset ký tự có thể được sử dụng kết hợp với tần suất lấy mẫu và tần suất giảm mẫu của mô hình để tính toán mốc thời gian của các ký tự được chuyển tự.

    Hãy xem ~models.wav2vec2.tokenization_wav2vec2.decode để hiểu rõ hơn cách sử dụng output_word_offsets. ~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decode hoạt động tương tự với phoneme và đầu ra dạng batch.

  • kwargs (các tham số từ khóa bổ sung, tùy chọn) — Sẽ được truyền đến phương thức decode cụ thể của model bên dưới.

Trả về

list[str] hoặc ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput

Câu đã được giải mã. Sẽ là ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput khi output_char_offsets == True.

Chuyển đổi một danh sách các danh sách id token thành một danh sách các chuỗi bằng cách gọi decode.

decode

< >

( 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

Tham số

  • token_ids (Union[int, list[int], np.ndarray, torch.Tensor]) — Danh sách các id đầu vào đã được token hóa. Có thể lấy bằng cách sử dụng phương thức __call__.
  • skip_special_tokens (bool, tùy chọn, mặc định là False) — Có loại bỏ các token đặc biệt trong quá trình giải mã hay không.
  • clean_up_tokenization_spaces (bool, tùy chọn) — Có dọn dẹp khoảng trắng trong token hóa hay không.
  • output_char_offsets (bool, tuỳ chọn, mặc định là False) — Có xuất offset ký tự hay không. Offset ký tự có thể được sử dụng kết hợp với tần suất lấy mẫu và tần suất giảm mẫu của mô hình để tính toán mốc thời gian của các ký tự được chuyển tự.

    Hãy xem ~models.wav2vec2.tokenization_wav2vec2.decode để hiểu rõ hơn cách sử dụng output_word_offsets. ~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decode hoạt động tương tự với các phoneme.

  • kwargs (các tham số từ khóa bổ sung, tùy chọn) — Sẽ được truyền đến phương thức decode cụ thể của model bên dưới.

Trả về

str hoặc ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput

Câu đã được giải mã. Sẽ là ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput khi output_char_offsets == True.

Chuyển đổi một chuỗi các id trong một chuỗi ký tự, sử dụng tokenizer và từ vựng với các tùy chọn để loại bỏ các token đặc biệt và dọn dẹp khoảng trắng trong token hóa.

Tương tự như việc thực hiện self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).

phonemize

< >

( text: strphonemizer_lang: str | None = None )

Update on GitHub