Transformers documentation
Wav2Vec2Phoneme
Este modelo se publicó en HF papers el 23 de septiembre de 2021 y se aportó a Hugging Face Transformers el 17 de diciembre de 2021.
Wav2Vec2Phoneme
Resumen
El modelo Wav2Vec2Phoneme fue propuesto en Simple and Effective Zero-shot Cross-lingual Phoneme Recognition (Xu et al., 2021) por Qiantong Xu, Alexei Baevski y Michael Auli.
El resumen del artículo es el siguiente:
Los avances recientes en autoentrenamiento, preentrenamiento auto supervisado y aprendizaje no supervisado han permitido obtener sistemas de reconocimiento de voz de alto rendimiento sin necesidad de datos etiquetados. Sin embargo, en muchos casos existe datos etiquetados disponibles para idiomas relacionados que estos métodos no aprovechan. Este artículo extiende el trabajo previo sobre transferencia cruzada de idiomas en cero disparos mediante el ajuste fino de un modelo wav2vec 2.0 preentrenado multilingüe para transcribir idiomas no vistos. Esto se logra mapeando los fonemas de los idiomas de entrenamiento al idioma objetivo utilizando características articulatorias. Los experimentos muestran que este método simple supera significativamente al trabajo anterior, que introdujo arquitecturas específicas para la tarea y utilizó solo parte de un modelo preentrenado monolingüe.
Los puntos de control relevantes se pueden encontrar en https://huggingface.co/models?other=phoneme-recognition.
Este modelo fue aportado por patrickvonplaten
El código original se puede encontrar aquí.
Consejos de uso
- Wav2Vec2Phoneme utiliza exactamente la misma arquitectura que Wav2Vec2
- Wav2Vec2Phoneme es un modelo de voz que acepta un array de float correspondiente a la forma de onda cruda de la señal de voz.
- El modelo Wav2Vec2Phoneme se entrenó usando clasificación temporal conexionista (CTC), por lo que la salida del modelo debe decodificarse con Wav2Vec2PhonemeCTCTokenizer.
- Wav2Vec2Phoneme se puede ajustar en varios idiomas a la vez y decodificar idiomas no vistos en una sola pasada hacia adelante a una secuencia de fonemas
- Por defecto, el modelo genera una secuencia de fonemas. Para transformar los fonemas en una secuencia de palabras, se debe utilizar un diccionario y un modelo de lenguaje.
La arquitectura de Wav2Vec2Phoneme se basa en el modelo Wav2Vec2; para consultar la referencia de la API, visite la página de documentación de
Wav2Vec2, con la excepción del tokenizador.
Wav2Vec2PhonemeCTCTokenizer
clase 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) — Archivo que contiene el vocabulario. - bos_token (
str, opcional, valor predeterminado"<s>") — El token de inicio de oración. - eos_token (
str, opcional, por defecto"</s>") — El token de fin de oración. - unk_token (
str, opcional, valor predeterminado"<unk>") — El token desconocido. Un token que no está en el vocabulario no se puede convertir en un ID y se establece como este token en su lugar. - pad_token (
str, opcional, valor predeterminado"<pad>") — El token utilizado para el relleno, por ejemplo, al agrupar secuencias de diferentes longitudes. - do_phonemize (
bool, opcional, valor predeterminadoTrue) — Indica si el tokenizador debe fonetizar la entrada o no. Solo si se pasa una secuencia de fonemas al tokenizador,do_phonemizedebe establecerse enFalse. - phonemizer_lang (
str, opcional, valor predeterminado"en-us") — El idioma del conjunto de fonemas al que el tokenizador debe fonetizar el texto de entrada. - phonemizer_backend (
str, opcional. Valor predeterminado:"espeak") — La biblioteca de fonetización de backend que debe utilizar la biblioteca phonemizer. El valor predeterminado esespeak-ng. Consulte el paquete phonemizer para obtener más información. - **kwargs — Argumentos de palabra clave adicionales que se pasan a PreTrainedTokenizer
Construye un tokenizador Wav2Vec2PhonemeCTC.
Este tokenizador hereda de PreTrainedTokenizer, que contiene algunos de los métodos principales. Los usuarios deben consultar la superclase para obtener más información sobre dichos 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) — La secuencia o lote de secuencias que se codificarán. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadenas pre-tokenizadas). Si las secuencias se proporcionan como lista de cadenas de caracteres (pre-tokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - text_pair (
str,list[str],list[list[str]], opcional) — La secuencia o lote de secuencias que se codificarán. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadena pre-tokenizada). Si las secuencias se proporcionan como lista de cadenas de caracteres (pre-tokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - text_target (
str,list[str],list[list[str]], opcional) — La secuencia o lote de secuencias que se codificarán como textos objetivo. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadena pretokenizada). Si las secuencias se proporcionan como lista de cadenas de caracteres (pretokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - text_pair_target (
str,list[str],list[list[str]], opcional) — La secuencia o lote de secuencias que se codificarán como textos objetivo. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadena pretokenizada). Si las secuencias se proporcionan como lista de cadenas de caracteres (pretokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - tokenizer_kwargs (
dict[str, Any], opcional) — Kwargs adicionales para pasar al tokenizer. Se fusionarán con los parámetros explícitos y otros kwargs, dando prioridad a los parámetros explícitos. - add_special_tokens (
bool, opcional, valor predeterminadoTrue) — Indica si se deben o no añadir tokens especiales al codificar las secuencias. Esto utilizará la función subyacentePretrainedTokenizerBase.build_inputs_with_special_tokens, que define qué tokens se añaden automáticamente a los ids de entrada. Esto es útil si deseas añadir tokensbosoeosautomáticamente. - padding (
bool,stro PaddingStrategy, opcional, el valor predeterminado esFalse) — Activa y controla el relleno. Acepta los siguientes valores:Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- truncation (
bool,stro TruncationStrategy, opcional, por defectoFalse) — Activa y controla la truncación. Acepta los siguientes valores:Trueo'longest_first': Trunca hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto truncará token a token, eliminando un token de la secuencia más larga de la pareja si se proporciona una pareja de secuencias (o un lote de parejas).'only_first': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la primera secuencia de un par si se proporciona un par de secuencias (o un lote de pares).'only_second': Trunca a una longitud máxima especificada con el argumentomax_lengtho a la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento. Esto solo truncará la segunda secuencia de un par si se proporciona un par de secuencias (o un lote de pares).Falseo'do_not_truncate'(predeterminado): sin truncamiento (es decir, se puede generar un lote con longitudes de secuencia mayores que el tamaño máximo de entrada admisible por el modelo).
- max_length (
int, opcional) — Controla la longitud máxima que se utilizará mediante uno de los parámetros de truncamiento/relleno.Si se deja sin definir o se establece en
None, se utilizará la longitud máxima predefinida del modelo si uno de los parámetros de truncamiento/relleno lo requiere. Si el modelo no tiene una longitud máxima de entrada específica (como XLNet), el truncamiento/relleno a una longitud máxima se desactivará. - stride (
int, opcional, valor predeterminado 0) — Si se establece en un número junto conmax_length, los tokens de desbordamiento devueltos cuandoreturn_overflowing_tokens=Truecontendrán algunos tokens del final de la secuencia truncada devuelta para proporcionar cierta superposición entre las secuencias truncadas y las de desbordamiento. El valor de este argumento define el número de tokens superpuestos. - is_split_into_words (
bool, opcional, valor predeterminadoFalse) — Indica si la entrada ya está pretokenizada (por ejemplo, dividida en palabras). Si se establece enTrue, el tokenizador asume que la entrada ya está dividida en palabras (por ejemplo, dividiéndola por espacios en blanco) y las tokenizará. Esto es útil para NER o clasificación de tokens. - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado. Requiere quepaddingesté activado. Esto es especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo>= 7.5(Volta). - padding_side (
str, opcional) — El lado en el que el modelo debe aplicar el relleno. Debe seleccionarse entre [‘right’, ‘left’]. El valor predeterminado se elige a partir del atributo de clase con el mismo nombre. - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores en lugar de una lista de enteros de Python. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetos Numpynp.ndarray.
- return_token_type_ids (
bool, opcional) — Si se deben devolver los IDs de tipo de token. Si se deja en el valor predeterminado, se devolverán los IDs de tipo de token según el valor predeterminado del tokenizador específico, definido por elreturn_outputsatributo. - return_attention_mask (
bool, opcional) — Si se debe devolver la máscara de atención. Si se deja en el valor predeterminado, se devolverá la máscara de atención según el valor predeterminado del tokenizador específico, definido por elreturn_outputsatributo. - return_overflowing_tokens (
bool, opcional, valor predeterminadoFalse) — Indica si se deben devolver las secuencias de tokens que exceden el límite. Si se proporciona un par de secuencias de ids de entrada (o un lote de pares) contruncation_strategy = longest_firstoTrue, se genera un error en lugar de devolver los tokens que exceden el límite. - return_special_tokens_mask (
bool, opcional, valor predeterminadoFalse) — Indica si se debe o no devolver información de la máscara de tokens especiales. - return_offsets_mapping (
bool, opcional, por defectoFalse) — Si se devuelve o no(char_start, char_end)para cada token.Esto solo está disponible en los tokenizadores rápidos que heredan de PreTrainedTokenizerFast; si se utiliza el tokenizador de Python, este método lanzará
NotImplementedError. - return_length (
bool, opcional, valor predeterminadoFalse) — Indica si se deben devolver las longitudes de las entradas codificadas. - verbose (
bool, opcional, valor predeterminadoTrue) — Si se imprime más información y advertencias. - **kwargs — se pasan al método
self.tokenize()
Devuelve
Un BatchEncoding con los siguientes campos:
-
input_ids — Lista de ids de tokens que se enviarán a un modelo.
-
token_type_ids — Lista de ids de tipo de token que se enviarán a un modelo (cuando
return_token_type_ids=Trueo si “token_type_ids” está enself.model_input_names). -
attention_mask — Lista de índices que especifica qué tokens deben ser atendidos por el modelo (cuando
return_attention_mask=Trueo si “attention_mask” está enself.model_input_names). -
overflowing_tokens — Lista de secuencias de tokens que exceden el límite (cuando se especifica un
max_lengthyreturn_overflowing_tokens=True). -
num_truncated_tokens — Número de tokens truncados (cuando se especifica un
max_lengthyreturn_overflowing_tokens=True). -
special_tokens_mask — Lista de 0 y 1, donde 1 especifica los tokens especiales añadidos y 0 especifica los tokens regulares de la secuencia (cuando
add_special_tokens=Trueyreturn_special_tokens_mask=True). -
length — La longitud de las entradas (cuando
return_length=True)
Método principal para tokenizar y preparar para el modelo una o varias secuencias o uno o varios pares de secuencias.
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. Se puede obtener usando el método__call__. - skip_special_tokens (
bool, opcional, valor predeterminadoFalse) — Indica si se deben eliminar los tokens especiales durante la decodificación. - clean_up_tokenization_spaces (
bool, opcional) — Indica si se deben limpiar los espacios de tokenización. - output_char_offsets (
bool, opcional, por defectoFalse) — Indica si se deben o no devolver los desplazamientos de caracteres. Los desplazamientos de caracteres pueden usarse en combinación con la tasa de muestreo y la tasa de submuestreo del modelo para calcular las marcas de tiempo de los caracteres transcritos.Eche un vistazo al ejemplo de
~models.wav2vec2.tokenization_wav2vec2.decodepara comprender mejor cómo aprovecharoutput_word_offsets.~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decodefunciona de manera análoga con fonemas y salida por lotes. - kwargs (argumentos de palabra clave adicionales, opcional) — Se pasará al método de decodificación específico del modelo subyacente.
Devuelve
list[str] o ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
La
frase decodificada. Será una
~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput cuando
output_char_offsets == True.
Convierta una lista de listas de ids de tokens en una lista de cadenas de texto llamando a 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. Se puede obtener mediante el método__call__. - skip_special_tokens (
bool, opcional, valor predeterminadoFalse) — Indica si se deben eliminar los tokens especiales durante la decodificación. - clean_up_tokenization_spaces (
bool, opcional) — Indica si se deben limpiar los espacios de tokenización. - output_char_offsets (
bool, opcional, por defectoFalse) — Indica si se deben o no devolver los desplazamientos de caracteres. Los desplazamientos de caracteres pueden combinarse con la tasa de muestreo y la tasa de submuestreo del modelo para calcular las marcas de tiempo de los caracteres transcritos.Eche un vistazo al ejemplo de
~models.wav2vec2.tokenization_wav2vec2.decodepara comprender mejor cómo aprovecharoutput_word_offsets.~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decodefunciona de la misma manera con fonemas. - kwargs (argumentos de palabra clave adicionales, opcional) — Se pasará al método de decodificación específico del modelo subyacente.
Devuelve
str o ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
La frase decodificada. Será un ~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput
cuando output_char_offsets == True.
Convierte una secuencia de ids en una cadena de texto, utilizando el tokenizador y el vocabulario, con opciones para eliminar tokens especiales y limpiar los espacios de tokenización.
Similar a hacer self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).