Transformers documentation
Wav2Vec2Phoneme
Este modelo foi publicado no HF papers em 2021-09-23 e contribuído para o Hugging Face Transformers em 2021-12-17.
Wav2Vec2Phoneme
Visão geral
O modelo Wav2Vec2Phoneme foi proposto em Simple and Effective Zero-shot Cross-lingual Phoneme Recognition (Xu et al., 2021) por Qiantong Xu, Alexei Baevski e Michael Auli.
O resumo do artigo é o seguinte:
Os avanços recentes em auto-treinamento, pré-treinamento auto-supervisionado e aprendizado não supervisionado permitiram o desenvolvimento de sistemas de reconhecimento de fala de alto desempenho sem a necessidade de dados rotulados. No entanto, em muitos casos, há dados rotulados disponíveis para idiomas relacionados que não são aproveitados por esses métodos. Este artigo estende trabalhos anteriores sobre transferência de aprendizado cross-lingual zero-shot, ajustando finamente um modelo wav2vec 2.0 pré-treinado multilíngue para transcrever idiomas não vistos. Isso é feito mapeando os fonemas dos idiomas de treinamento para o idioma de destino usando características articulatórias. Os experimentos mostram que esse método simples supera significativamente trabalhos anteriores que introduziram arquiteturas específicas para a tarefa e utilizaram apenas parte de um modelo pré-treinado monolíngue.
Os checkpoints relevantes podem ser encontrados em https://huggingface.co/models?other=phoneme-recognition.
Este modelo foi contribuído por patrickvonplaten
O código original pode ser encontrado aqui.
Dicas de uso
- Wav2Vec2Phoneme usa exatamente a mesma arquitetura que Wav2Vec2
- Wav2Vec2Phoneme é um modelo de fala que aceita um array de float correspondente à forma de onda bruta do sinal de fala.
- O modelo Wav2Vec2Phoneme foi treinado usando classificação temporal conexionista (CTC), portanto a saída do modelo precisa ser decodificada usando Wav2Vec2PhonemeCTCTokenizer.
- O Wav2Vec2Phoneme pode ser ajustado em múltiplos idiomas simultaneamente e decodificar idiomas não vistos em uma única passagem para frente para uma sequência de fonemas
- Por padrão, o modelo gera uma sequência de fonemas. Para transformar os fonemas em uma sequência de palavras, é necessário utilizar um dicionário e um modelo de linguagem.
A arquitetura do Wav2Vec2Phoneme é baseada no modelo Wav2Vec2; para referência da API, consulte a página de documentação do
Wav2Vec2, exceto pelo tokenizer.
Wav2Vec2PhonemeCTCTokenizer
classe 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 )
Parâmetros
- vocab_file (
str) — Arquivo contendo o vocabulário. - bos_token (
str, opcional, padrão"<s>") — O token de início de frase. - eos_token (
str, opcional, padrão"</s>") — O token de fim de frase. - unk_token (
str, opcional, padrão"<unk>") — O token desconhecido. Um token que não está no vocabulário não pode ser convertido em um ID e é definido como este token em vez disso. - pad_token (
str, opcional, padrão"<pad>") — O token usado para preenchimento, por exemplo, ao agrupar sequências de comprimentos diferentes. - do_phonemize (
bool, opcional, padrãoTrue) — Se o tokenizer deve ou não fonetizar a entrada. Somente se uma sequência de fonemas for passada ao tokenizer,do_phonemizedeve ser definido comoFalse. - phonemizer_lang (
str, opcional, padrão"en-us") — O idioma do conjunto de fonemas para o qual o tokenizer deve fonetizar o texto de entrada. - phonemizer_backend (
str, opcional. padrão é"espeak") — A biblioteca de fonetização de backend que deve ser usada pela biblioteca phonemizer. O padrão éespeak-ng. Veja o pacote phonemizer para mais informações. - **kwargs — Argumentos de palavra-chave adicionais passados para PreTrainedTokenizer
Constrói um tokenizador Wav2Vec2PhonemeCTC.
Este tokenizer herda de PreTrainedTokenizer, que contém alguns dos principais métodos. Os usuários devem consultar a superclasse para obter mais informações sobre esses métodos.
__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
Parâmetros
- text (
str,list[str],list[list[str]], opcional) — A sequência ou lote de sequências a ser codificada. Cada sequência pode ser uma string ou uma lista de strings (string pré-tokenizada). Se as sequências forem fornecidas como lista de strings (pré-tokenizadas), você deve definiris_split_into_words=True(para eliminar a ambiguidade com um lote de sequências). - text_pair (
str,list[str],list[list[str]], opcional) — A sequência ou lote de sequências a ser codificada. Cada sequência pode ser uma string ou uma lista de strings (string pré-tokenizada). Se as sequências forem fornecidas como lista de strings (pré-tokenizadas), você deve definiris_split_into_words=True(para eliminar a ambiguidade com um lote de sequências). - text_target (
str,list[str],list[list[str]], opcional) — A sequência ou lote de sequências a serem codificadas como textos de destino. Cada sequência pode ser uma string ou uma lista de strings (string pretokenizada). Se as sequências forem fornecidas como lista de strings (pretokenizadas), você deve definiris_split_into_words=True(para eliminar a ambiguidade com um lote de sequências). - text_pair_target (
str,list[str],list[list[str]], opcional) — A sequência ou lote de sequências a ser codificada como textos de destino. Cada sequência pode ser uma string ou uma lista de strings (string pretokenizada). Se as sequências forem fornecidas como lista de strings (pretokenizadas), você deve definiris_split_into_words=True(para eliminar a ambiguidade com um lote de sequências). - tokenizer_kwargs (
dict[str, Any], opcional) — Kwargs adicionais para passar ao tokenizer. Eles serão mesclados com os parâmetros explícitos e outros kwargs, com os parâmetros explícitos tendo precedência. - add_special_tokens (
bool, opcional, padrãoTrue) — Indica se tokens especiais devem ser adicionados ao codificar as sequências. Isso utiliza a função subjacentePretrainedTokenizerBase.build_inputs_with_special_tokens, que define quais tokens são adicionados automaticamente aos ids de entrada. Isso é útil se você deseja adicionar tokensbosoueosautomaticamente. - padding (
bool,strou PaddingStrategy, opcional, padrão éFalse) — Ativa e controla o padding. Aceita os seguintes valores:Trueou'longest': Preenche até a sequência mais longa do lote (ou não aplica preenchimento se apenas uma sequência for fornecida).'max_length': Preenche até o comprimento máximo especificado com o argumentomax_lengthou até o comprimento máximo aceitável de entrada para o modelo, caso esse argumento não seja fornecido.Falseou'do_not_pad'(padrão): Sem padding (ou seja, pode gerar um lote com sequências de comprimentos diferentes).
- truncation (
bool,strou TruncationStrategy, opcional, padrão éFalse) — Ativa e controla a truncagem. Aceita os seguintes valores:Trueou'longest_first': Trunca para um comprimento máximo especificado com o argumentomax_lengthou para o comprimento máximo aceitável de entrada para o modelo, caso esse argumento não seja fornecido. Isso trunca token por token, removendo um token da sequência mais longa do par, se um par de sequências (ou um lote de pares) for fornecido.'only_first': Trunca para o comprimento máximo especificado com o argumentomax_lengthou para o comprimento máximo aceitável de entrada do modelo, caso esse argumento não seja fornecido. Isso trunca apenas a primeira sequência de um par, se um par de sequências (ou um lote de pares) for fornecido.'only_second': Trunca para um comprimento máximo especificado com o argumentomax_lengthou para o comprimento máximo aceitável de entrada do modelo, caso esse argumento não seja fornecido. Isso trunca apenas a segunda sequência de um par, se um par de sequências (ou um lote de pares) for fornecido.Falseou'do_not_truncate'(padrão): Sem truncamento (ou seja, pode gerar um lote com comprimentos de sequência maiores que o tamanho máximo de entrada aceitável pelo modelo).
- max_length (
int, opcional) — Controla o comprimento máximo a ser usado por um dos parâmetros de truncamento/preenchimento.Se não for definido ou for definido como
None, isso usará o comprimento máximo predefinido do modelo, caso um dos parâmetros de truncamento/preenchimento exija um comprimento máximo. Se o modelo não tiver um comprimento máximo de entrada específico (como o XLNet), o truncamento/preenchimento para um comprimento máximo será desativado. - stride (
int, opcional, padrão 0) — Se definido como um número junto commax_length, os tokens excedentes retornados quandoreturn_overflowing_tokens=Trueconterão alguns tokens do final da sequência truncada retornada para fornecer alguma sobreposição entre as sequências truncadas e excedentes. O valor deste argumento define o número de tokens sobrepostos. - is_split_into_words (
bool, opcional, padrãoFalse) — Indica se a entrada já está pré-tokenizada (por exemplo, dividida em palavras). Se definido comoTrue, o tokenizer assume que a entrada já foi dividida em palavras (por exemplo, separando por espaços em branco) e a tokeniza. Isso é útil para NER ou classificação de tokens. - pad_to_multiple_of (
int, opcional) — Se definido, a sequência será preenchida até um múltiplo do valor fornecido. Exige quepaddingesteja ativado. Isso é especialmente útil para habilitar o uso de Tensor Cores em hardware NVIDIA com capacidade de computação>= 7.5(Volta). - padding_side (
str, opcional) — O lado em que o modelo deve ter o padding aplicado. Deve ser selecionado entre [‘right’, ‘left’]. O valor padrão é obtido do atributo de classe com o mesmo nome. - return_tensors (
strou TensorType, opcional) — Se definido, retornará tensors em vez de uma lista de inteiros do Python. Os valores aceitos são:'pt': Retorna objetostorch.Tensordo PyTorch.'np': Retorna objetosnp.ndarraydo Numpy.
- return_token_type_ids (
bool, opcional) — Se deve retornar os IDs de tipo de token. Se mantido o valor padrão, retornará os IDs de tipo de token de acordo com o padrão do tokenizer específico, definido peloreturn_outputsatributo. - return_attention_mask (
bool, opcional) — Se deve retornar a attention mask. Se mantido o valor padrão, a attention mask será retornada de acordo com o padrão do tokenizer específico, definido pelo atributoreturn_outputs. - return_overflowing_tokens (
bool, opcional, padrãoFalse) — Indica se as sequências de tokens excedentes devem ser retornadas. Se um par de sequências de ids de entrada (ou um lote de pares) for fornecido comtruncation_strategy = longest_firstouTrue, um erro será lançado em vez de retornar os tokens excedentes. - return_special_tokens_mask (
bool, opcional, padrãoFalse) — Indica se a máscara de tokens especiais deve ser retornada. - return_offsets_mapping (
bool, opcional, padrão éFalse) — Se deve ou não retornar(char_start, char_end)para cada token.Isso está disponível apenas em tokenizadores rápidos que herdam de PreTrainedTokenizerFast; se estiver usando o tokenizador em Python, este método lançará
NotImplementedError. - return_length (
bool, opcional, padrãoFalse) — Indica se as comprimentos das entradas codificadas devem ser retornados. - verbose (
bool, opcional, padrãoTrue) — Se deve ou não exibir mais informações e avisos. - **kwargs — passados para o método
self.tokenize()
Retorna
Um BatchEncoding com os seguintes campos:
-
input_ids — Lista de ids de tokens a serem fornecidos a um modelo.
-
token_type_ids — Lista de ids de tipo de token a serem fornecidos a um modelo (quando
return_token_type_ids=Trueou se “token_type_ids” estiver emself.model_input_names). -
attention_mask — Lista de índices que especifica quais tokens devem ser considerados pelo modelo (quando
return_attention_mask=Trueou se “attention_mask” estiver emself.model_input_names). -
overflowing_tokens — Lista de sequências de tokens excedentes (quando um
max_lengthé especificado ereturn_overflowing_tokens=True). -
num_truncated_tokens — Número de tokens truncados (quando um
max_lengthé especificado ereturn_overflowing_tokens=True). -
special_tokens_mask — Lista de 0s e 1s, em que 1 especifica tokens especiais adicionados e 0 especifica tokens regulares da sequência (quando
add_special_tokens=Trueereturn_special_tokens_mask=True). -
length — O comprimento das entradas (quando
return_length=True)
Método principal para tokenizar e preparar uma ou várias sequências ou um ou vários pares de sequências para o modelo.
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
Parâmetros
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — Lista de ids de entrada tokenizados. Pode ser obtida usando o método__call__. - skip_special_tokens (
bool, opcional, padrãoFalse) — Indica se os tokens especiais devem ser removidos durante a decodificação. - clean_up_tokenization_spaces (
bool, opcional) — Indica se os espaços de tokenização devem ser limpos. - output_char_offsets (
bool, opcional, padrão éFalse) — Indica se deve ou não exibir os deslocamentos de caracteres. Os deslocamentos de caracteres podem ser usados em conjunto com a taxa de amostragem e a taxa de redução de amostragem do modelo para calcular os carimbos de tempo dos caracteres transcritos.Dê uma olhada no Exemplo de
~models.wav2vec2.tokenization_wav2vec2.decodepara entender melhor como utilizaroutput_word_offsets.~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decodefunciona de forma análoga com fonemas e saída em lote. - kwargs (argumentos de palavra-chave adicionais, opcional) — Serão passados para o método de decodificação específico do modelo subjacente.
Retorna
list[str] ou ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
A
frase decodificada. Será um
~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput quando
output_char_offsets == True.
Converta uma lista de listas de ids de tokens em uma lista de strings chamando decode.
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
Parâmetros
- token_ids (
Union[int, list[int], np.ndarray, torch.Tensor]) — Lista de ids de entrada tokenizados. Pode ser obtida usando o método__call__. - skip_special_tokens (
bool, opcional, padrãoFalse) — Indica se os tokens especiais devem ser removidos durante a decodificação. - clean_up_tokenization_spaces (
bool, opcional) — Indica se os espaços de tokenização devem ser limpos. - output_char_offsets (
bool, opcional, padrão éFalse) — Indica se os deslocamentos de caracteres devem ser incluídos na saída. Os deslocamentos de caracteres podem ser usados em conjunto com a taxa de amostragem e a taxa de redução de amostragem do modelo para calcular os carimbos de tempo dos caracteres transcritos.Dê uma olhada no Exemplo de
~models.wav2vec2.tokenization_wav2vec2.decodepara entender melhor como fazer uso deoutput_word_offsets.~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decodefunciona da mesma forma com fonemas. - kwargs (argumentos de palavra-chave adicionais, opcional) — Serão passados para o método de decodificação específico do modelo subjacente.
Retorna
str ou ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
A frase decodificada. Será um ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
quando output_char_offsets == True.
Converte uma sequência de ids em uma string, usando o tokenizer e o vocabulário, com opções para remover tokens especiais e limpar os espaços de tokenização.
Semelhante a executar self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).