Transformers documentation
SeamlessM4T-v2
Este modelo se publicó en HF papers el 2023-12-08 y se contribuyó a Hugging Face Transformers el 2023-11-30.
SeamlessM4T-v2
Resumen
El modelo SeamlessM4T-v2 fue propuesto en Seamless: Multilingual Expressive and Streaming Speech Translation por el equipo de Comunicación Sin Barreras de Meta AI.
SeamlessM4T-v2 es una colección de modelos diseñados para ofrecer traducciones de alta calidad, lo que permite a las personas de diferentes comunidades lingüísticas comunicarse sin esfuerzo a través del habla y el texto. Es una mejora sobre la versión anterior. Para más detalles sobre las diferencias entre v1 y v2, consulte la sección Diferencia con SeamlessM4T-v1.
SeamlessM4T-v2 permite realizar múltiples tareas sin depender de modelos separados:
- Traducción de voz a voz (S2ST)
- Traducción de voz a texto (S2TT)
- Traducción de texto a voz (T2ST)
- Traducción de texto a texto (T2TT)
- Reconocimiento automático del habla (ASR)
SeamlessM4Tv2Model puede realizar todas las tareas anteriores, pero cada tarea también tiene su propio submodelo dedicado.
El resumen del artículo es el siguiente:
Los avances recientes en la traducción automática del habla han ampliado drásticamente la cobertura de idiomas, mejorado las capacidades multimodales y habilitado una amplia gama de tareas y funcionalidades. Dicho esto, los sistemas de traducción automática del habla a gran escala de hoy en día carecen de funciones clave que ayudan a que la comunicación mediada por máquinas se sienta fluida en comparación con el diálogo entre humanos. En este trabajo, presentamos una familia de modelos que permiten traducciones expresivas y multilingües de extremo a extremo de forma en streaming. En primer lugar, contribuimos con una versión mejorada del modelo masivamente multilingüe y multimodal SeamlessM4T: SeamlessM4T v2. Este nuevo modelo, que incorpora un marco UnitY2 actualizado, se entrenó con más datos de idiomas con recursos limitados. La versión ampliada de SeamlessAlign añade 114.800 horas de datos alineados automáticamente para un total de 76 idiomas. SeamlessM4T v2 proporciona la base sobre la que se inician nuestros dos modelos más nuevos, SeamlessExpressive y SeamlessStreaming. SeamlessExpressive permite una traducción que preserva los estilos vocales y la prosodia. En comparación con esfuerzos anteriores en la investigación del habla expresiva, nuestro trabajo aborda ciertos aspectos de la prosodia poco explorados, como la velocidad del habla y las pausas, al tiempo que preserva el estilo de la voz de la persona. En cuanto a SeamlessStreaming, nuestro modelo aprovecha el mecanismo Efficient Monotonic Multihead Attention (EMMA) para generar traducciones de destino de baja latencia sin esperar a las enunciaciones de origen completas. Como el primero de su tipo, SeamlessStreaming permite la traducción simultánea de habla a habla/texto para múltiples idiomas de origen y destino. Para comprender el rendimiento de estos modelos, combinamos versiones novedosas y modificadas de métricas automáticas existentes para evaluar la prosodia, la latencia y la robustez. Para las evaluaciones humanas, adaptamos protocolos existentes diseñados para medir los atributos más relevantes en la preservación del significado, la naturalidad y la expresividad. Para garantizar que nuestros modelos se utilicen de forma segura y responsable, implementamos el primer esfuerzo de red-teaming conocido para la traducción automática multimodal, un sistema para la detección y mitigación de la toxicidad añadida, una evaluación sistemática del sesgo de género y un mecanismo de marca de agua localizada e inaudible diseñado para atenuar el impacto de los deepfakes. En consecuencia, reunimos los componentes principales de SeamlessExpressive y SeamlessStreaming para formar Seamless, el primer sistema disponible públicamente que desbloquea la comunicación expresiva entre idiomas en tiempo real. En resumen, Seamless nos ofrece una mirada clave a la base técnica necesaria para convertir el Traductor Universal del Habla de un concepto de ciencia ficción en una tecnología del mundo real. Finalmente, las contribuciones de este trabajo, incluidos los modelos, el código y un detector de marcas de agua, se publican y están disponibles en el enlace siguiente.
Uso
En el siguiente ejemplo, cargaremos una muestra de audio en árabe y una muestra de texto en inglés y las convertiremos en voz en ruso y texto en francés.
Primero, cargue el procesador y un punto de control del modelo:
from transformers import AutoProcessor, SeamlessM4Tv2Model
processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large")
model = SeamlessM4Tv2Model.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")Puede utilizar este modelo de forma fluida con texto o con audio, para generar texto traducido o audio traducido.
Así es como se usa el procesador para procesar texto y audio:
# let's load an audio sample from an Arabic speech corpus
from datasets import load_dataset
dataset = load_dataset("halabi2016/arabic_speech_corpus", split="test", streaming=True)
audio_sample = next(iter(dataset))["audio"]
# now, process it
audio_inputs = processor(audio=audio_sample["array"], return_tensors="pt").to(model.device)
# now, process some English text as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)Speech
SeamlessM4Tv2Model puede generar texto o voz sin problemas con pocos o ningún cambio. Vamos a apuntar a la traducción de voz al ruso:
audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()Con prácticamente el mismo código, he traducido texto en inglés y audio en árabe a muestras de audio en ruso.
Texto
De manera similar, puedes generar texto traducido a partir de archivos de audio o de texto con el mismo modelo. Solo tienes que pasar generate_speech=False a SeamlessM4Tv2Model.generate().
Esta vez, traduzcamos al francés.
# from audio
output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_audio = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
# from text
output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)Consejos
1. Use modelos dedicados
SeamlessM4Tv2Model es el modelo de nivel superior de transformers para generar voz y texto, pero también puedes usar modelos dedicados que realizan la tarea sin componentes adicionales, reduciendo así la huella de memoria. Por ejemplo, puedes reemplazar el fragmento de código de generación de audio a audio con el modelo dedicado a la tarea S2ST; el resto es exactamente el mismo código:
from transformers import SeamlessM4Tv2ForSpeechToSpeech
model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")O bien, puede reemplazar el fragmento de generación de texto a texto con el modelo dedicado a la tarea T2TT; solo tiene que eliminar generate_speech=False.
from transformers import SeamlessM4Tv2ForTextToText
model = SeamlessM4Tv2ForTextToText.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")Puede probar también SeamlessM4Tv2ForSpeechToText y SeamlessM4Tv2ForTextToSpeech.
2. Cambiar la identidad del hablante
Puedes cambiar el orador utilizado para la síntesis de voz con el argumento speaker_id. Algunos speaker_id funcionan mejor que otros para ciertos idiomas.
3. Cambiar la estrategia de generación
Puede utilizar diferentes estrategias de generación para la generación de texto, por ejemplo .generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True), que realizará una decodificación de búsqueda por haces multinomial en el modelo de texto. Tenga en cuenta que la generación de voz solo admite la búsqueda codiciosa - por defecto - o la muestreo multinomial, que se puede utilizar con, por ejemplo, .generate(..., speech_do_sample=True, speech_temperature=0.6).
4. Generar voz y texto al mismo tiempo
Usa return_intermediate_token_ids=True con SeamlessM4Tv2Model para devolver tanto el habla como el texto.
Arquitectura del modelo
SeamlessM4T-v2 cuenta con una arquitectura versátil que gestiona de forma fluida la generación secuencial de texto y voz. Esta configuración comprende dos modelos de secuencia a secuencia (seq2seq). El primer modelo traduce la modalidad de entrada a texto traducido, mientras que el segundo modelo genera tokens de voz, conocidos como “unit tokens”, a partir del texto traducido.
Cada modalidad tiene su propio codificador dedicado con una arquitectura única. Además, para la salida de voz, se coloca un vocoder inspirado en la arquitectura HiFi-GAN sobre el segundo modelo seq2seq.
Diferencia con SeamlessM4T-v1
La arquitectura de esta nueva versión difiere de la primera en algunos aspectos:
Mejoras en el modelo de la segunda pasada
El segundo modelo seq2seq, denominado modelo de texto a unidades, ahora es no autoregresivo, lo que significa que calcula las unidades en un paso de propagación hacia adelante único. Este logro se hace posible gracias a:
- el uso de incrustaciones a nivel de carácter, lo que significa que cada carácter del texto traducido predicho tiene sus propias incrustaciones, que luego se utilizan para predecir los tokens de unidad.
- el uso de un predictor de duración intermedio, que predice la duración del habla a nivel de carácter en el texto traducido predicho.
- el uso de un nuevo decodificador de texto a unidades que combina convoluciones y autoatención para manejar contextos más largos.
Diferencia en el codificador de voz
El codificador de voz, que se utiliza durante el proceso de generación de la primera pasada para predecir el texto traducido, difiere principalmente del codificador de voz anterior a través de estos mecanismos:
- el uso de una máscara de atención por bloques para evitar la atención entre bloques, garantizando que cada posición atienda solo a posiciones dentro de su propio bloque y a un número fijo de bloques anteriores.
- el uso de incrustaciones de posición relativa, que solo considera la distancia entre los elementos de la secuencia en lugar de las posiciones absolutas. Consulte Self-Attention with Relative Position Representations (Shaw et al.) para más detalles.
- el uso de una convolución causal por profundidad en lugar de una no causal.
Proceso de generación
Así funciona el proceso de generación:
- El texto o el habla de entrada se procesan a través de su codificador específico.
- Un decodificador crea tokens de texto en el idioma deseado.
- Si se requiere la generación de voz, el segundo modelo seq2seq genera tokens de unidad de manera no autorregresiva.
- Estos tokens de unidad se pasan luego a través del vocoder final para producir el habla real.
Este modelo fue aportado por ylacombe. El código original se puede encontrar aquí.
SeamlessM4Tv2Model
clase transformers.SeamlessM4Tv2Model
< source >( config: SeamlessM4Tv2Configcurrent_modality = 'text' )
Parámetros
- config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
- current_modality (
str, opcional, valor predeterminado"text") — Modalidad predeterminada. Se utiliza para inicializar el modelo.
El transformer del modelo original SeamlessM4Tv2, que puede utilizarse para todas las tareas disponibles (S2ST, S2TT, T2TT, T2ST).
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0generate_speech: bool | None = True**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario.Los índices se pueden obtener usando SeamlessM4TTokenizer o SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- input_features (
torch.Tensorde forma(batch_size, sequence_length, num_banks), opcional) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles. - return_intermediate_token_ids (
bool, opcional) — Si esTrue, también devuelve el texto generado intermedio y los tokens de unidad. EstableceTruesi también deseas obtener el texto traducido junto con el audio. Ten en cuenta que sigenerate_speech=False, este parámetro se ignorará y se devolverán los tokens de texto. - tgt_lang (
str, opcional) — El idioma que se usará como idioma de destino para la traducción. - speaker_id (
int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor queconfig.vocoder_num_spkrs. - generate_speech (
bool, opcional, valor predeterminadoTrue) — Si esFalse, solo devuelve los tokens de texto y no genera el habla. - kwargs (opcional) —
Diccionario restante de argumentos de palabra clave que se pasará a GenerationMixin.generate(). Los argumentos de palabra clave son de dos tipos:
- Sin un prefijo, se introducirán como
**kwargspara el métodogeneratede cada submodelo, exceptodecoder_input_ids, que solo se pasará a través de los componentes de texto. - Con un prefijo text_ o speech_, se utilizarán como entrada para el método
generatedel modelo de texto y del modelo de voz, respectivamente. Tienen prioridad sobre las palabras clave sin prefijo.
Esto significa que, por ejemplo, puede especificar una estrategia de generación para una generación pero no para la otra.
- Sin un prefijo, se introducirán como
Devuelve
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
- Si
generate_speechyreturn_intermediate_token_ids, devuelveSeamlessM4Tv2GenerationOutput. - Si
generate_speechy noreturn_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma(batch_size, sequence_length)ywaveform_lengths, que indica la longitud de cada muestra. - Si
generate_speech=False, devuelveModelOutput.
Genera ids de tokens traducidos y/o formas de onda de audio traducidas.
Este método llama sucesivamente a la función
.generatede dos submodelos diferentes. Puede especificar argumentos de palabra clave en dos niveles distintos: argumentos generales que se pasarán a ambos modelos, o argumentos con prefijo que se pasarán a uno de ellos.Por ejemplo, llamar a
.generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)realizará sucesivamente la decodificación por búsqueda de haces en el modelo de texto y el muestreo por búsqueda de haces multinomial en el modelo de voz.Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.
SeamlessM4Tv2ForTextToSpeech
clase transformers.SeamlessM4Tv2ForTextToSpeech
< source >( config: SeamlessM4Tv2Config )
Parámetros
- config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El modelo transformer de texto a voz SeamlessM4Tv2, que puede usarse para T2ST.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length)) — Índices de los tokens de la secuencia de entrada en el vocabulario.Los índices se pueden obtener usando SeamlessM4TTokenizer o SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- return_intermediate_token_ids (
bool, opcional) — Si esTrue, también devuelve el texto generado intermedio y los tokens de unidad. EstableceTruesi también deseas obtener el texto traducido junto con el audio. - tgt_lang (
str, opcional) — El idioma que se usará como idioma de destino para la traducción. - speaker_id (
int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor queconfig.vocoder_num_spkrs. - kwargs (opcional) —
Diccionario restante de argumentos de palabra clave que se pasará a GenerationMixin.generate(). Los argumentos de palabra clave son de dos tipos:
- Sin un prefijo, se introducirán como
**kwargspara el métodogeneratede cada submodelo, exceptodecoder_input_ids, que solo se pasará a través de los componentes de texto. - Con un prefijo text_ o speech_, se utilizarán como entrada para el método
generatedel modelo de texto y del modelo de voz, respectivamente. Tienen prioridad sobre las palabras clave sin prefijo.
Esto significa que, por ejemplo, puede especificar una estrategia de generación para una generación pero no para la otra.
- Sin un prefijo, se introducirán como
Devuelve
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- Si
return_intermediate_token_ids, devuelveSeamlessM4Tv2GenerationOutput. - Si no
return_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma(batch_size, sequence_length)ywaveform_lengths, que indica la longitud de cada muestra.
Genera formas de onda de audio traducidas.
Este método llama sucesivamente a la función
.generatede dos submodelos diferentes. Puede especificar argumentos de palabra clave en dos niveles distintos: argumentos generales que se pasarán a ambos modelos, o argumentos con prefijo que se pasarán a uno de ellos.Por ejemplo, llamar a
.generate(input_ids, num_beams=4, speech_do_sample=True)ejecutará sucesivamente la decodificación por búsqueda de haces en el modelo de texto y el muestreo por búsqueda de haces multinomial en el modelo de voz.Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.
SeamlessM4Tv2ForSpeechToSpeech
clase transformers.SeamlessM4Tv2ForSpeechToSpeech
< source >( config: SeamlessM4Tv2Config )
Parámetros
- config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El transformer del modelo de voz a voz SeamlessM4Tv2, que puede utilizarse para S2ST.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
generate
< source >( input_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
Parámetros
- input_features (
torch.Tensorde forma(batch_size, sequence_length, num_banks)) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles. - return_intermediate_token_ids (
bool, opcional) — Si esTrue, también devuelve el texto generado intermedio y los tokens de unidad. EstableceTruesi también deseas obtener el texto traducido junto con el audio. - tgt_lang (
str, opcional) — El idioma que se usará como idioma de destino para la traducción. - speaker_id (
int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor queconfig.vocoder_num_spkrs. - kwargs (opcional) —
Diccionario restante de argumentos de palabra clave que se pasará a GenerationMixin.generate(). Los argumentos de palabra clave son de dos tipos:
- Sin un prefijo, se introducirán como
**kwargspara el métodogeneratede cada submodelo, exceptodecoder_input_ids, que solo se pasará a través de los componentes de texto. - Con un prefijo text_ o speech_, se utilizarán como entrada para el método
generatedel modelo de texto y del modelo de voz, respectivamente. Tienen prioridad sobre las palabras clave sin prefijo.
Esto significa que, por ejemplo, puede especificar una estrategia de generación para una generación pero no para la otra.
- Sin un prefijo, se introducirán como
Devuelve
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- Si
return_intermediate_token_ids, devuelveSeamlessM4Tv2GenerationOutput. - Si no
return_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma(batch_size, sequence_length)ywaveform_lengths, que indica la longitud de cada muestra.
Genera formas de onda de audio traducidas.
Este método llama sucesivamente a la función
.generatede dos submodelos diferentes. Puede especificar argumentos de palabra clave en dos niveles distintos: argumentos generales que se pasarán a ambos modelos, o argumentos con prefijo que se pasarán a uno de ellos.Por ejemplo, llamar a
.generate(input_features, num_beams=4, speech_do_sample=True)ejecutará sucesivamente la decodificación por búsqueda de haces en el modelo de texto y el muestreo por búsqueda de haces multinomial en el modelo de voz.Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.
SeamlessM4Tv2ForTextToText
clase transformers.SeamlessM4Tv2ForTextToText
< source >( config: SeamlessM4Tv2Config )
Parámetros
- config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El transformer del modelo de texto a texto SeamlessM4Tv2, que puede utilizarse para T2TT.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- decoder_input_ids (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Índices de los tokens de la secuencia de entrada del decodificador en el vocabulario. Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles. ¿Qué son los IDs de entrada del decodificador? Bart usa eos_token_id como token inicial para la generación de decoder_input_ids. Si se usa past_key_values, opcionalmente solo se deben ingresar los últimos decoder_input_ids (consulte past_key_values). Para el entrenamiento de traducción y resumen, se deben proporcionar decoder_input_ids. Si no se proporcionan decoder_input_ids, el modelo creará este tensor desplazando input_ids hacia la derecha para el preentrenamiento de desruido, siguiendo el artículo.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
¿Qué son los IDs de entrada del decodificador?
Bart utiliza
eos_token_idcomo el token inicial para la generación dedecoder_input_ids. Si se utilizapast_key_values, opcionalmente solo se deben introducir los últimosdecoder_input_ids(verpast_key_values).Para el entrenamiento de traducción y resumen, se debe proporcionar
decoder_input_ids. Si no se proporcionadecoder_input_ids, el modelo creará este tensor desplazandoinput_idshacia la derecha para el preentrenamiento de desruido, siguiendo el artículo. - decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Comportamiento predeterminado: genera un tensor que ignora los tokens de relleno endecoder_input_ids. La máscara causal también se usará de forma predeterminada. Si deseas cambiar el comportamiento de relleno, debes leer modeling_bart._prepare_decoder_attention_mask y modificarlo según tus necesidades. Consulta la figura 1 del artículo para obtener más información sobre la estrategia predeterminada.Si deseas cambiar el comportamiento del relleno, debes leer
modeling_bart._prepare_decoder_attention_masky modificarlo según tus necesidades. Consulta la figura 1 de el artículo para obtener más información sobre la estrategia predeterminada. - encoder_outputs (
tuple[tuple[torch.Tensor]], opcional) — La tupla consiste en (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_idspuede optar por pasar directamente una representación incrustada. Esto es útil si desea tener más control sobre cómo convertirinput_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional): Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en[-100, 0, ..., config.vocab_size](ver la docstring deinput_ids). Los tokens con índices establecidos en-100se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasardecoder_input_idspuede optar por pasar directamente una representación incrustada. Sipast_key_valuesse usa, opcionalmente solo la últimadecoder_inputs_embedsdebe ser introducida (verpast_key_values). Esto es útil si se desea tener más control sobre cómo convertirdecoder_input_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.Si
decoder_input_idsydecoder_inputs_embedsno están configurados,decoder_inputs_embedstoma el valor deinputs_embeds. - labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en[0, ..., config.vocab_size]o ser -100 (ver la docstring deinput_ids). Los tokens con índices establecidos en-100se ignoran (enmascarados); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size]. - use_cache (
bool, opcional) — Si se establece enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_key_values).
Devuelve
Seq2SeqLMOutput o tuple(torch.Tensor)
Un Seq2SeqLMOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (SeamlessM4Tv2Config) y las entradas.
El método forward de SeamlessM4Tv2ForTextToText sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de modelado de lenguaje.logits (
torch.Tensorde forma(batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).past_key_values (
EncoderDecoderCache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de EncoderDecoderCache. Para más detalles, consulte nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que pueden utilizarse (véase la entrada
past_key_values) para acelerar la decodificación secuencial.decoder_hidden_states (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del decodificador en la salida de cada capa más las salidas de la incrustación inicial.
decoder_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
cross_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.
encoder_last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.encoder_hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del codificador en la salida de cada capa más las salidas de la incrustación inicial.
encoder_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
generate
< source >( input_ids = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor
Parámetros
- input_ids (
torch.Tensorde forma variable según la modalidad, opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario.Los índices se pueden obtener usando SeamlessM4TTokenizer o SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- tgt_lang (
str, opcional) — El idioma que se usará como idioma de destino para la traducción. - generation_config (
~generation.GenerationConfig, opcional) — La configuración de generación que se utilizará como parametrización base para la llamada de generación. Los**kwargspasados a generate que coincidan con los atributos degeneration_configlos sobrescribirán. Si no se proporcionageneration_config, se utilizará la predeterminada, que tiene la siguiente prioridad de carga: 1) desde el archivo de modelogeneration_config.json, si existe; 2) desde la configuración del modelo. Tenga en cuenta que los parámetros no especificados heredarán los valores predeterminados de GenerationConfig, cuya documentación debe consultarse para parametrizar la generación. - logits_processor (
LogitsProcessorList, opcional) — Procesadores de logits personalizados que complementan los procesadores de logits predeterminados creados a partir de los argumentos y la configuración de generación. Si se pasa un procesador de logits que ya fue creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados. - stopping_criteria (
StoppingCriteriaList, opcional) — Criterios de parada personalizados que complementan los criterios de parada predeterminados creados a partir de los argumentos y una configuración de generación. Si se pasa un criterio de parada que ya ha sido creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], opcional) — Si se proporciona, esta función restringe la búsqueda por haz a los tokens permitidos en cada paso. Si no se proporciona, no se aplica ninguna restricción. Esta función toma 2 argumentos: el ID del lotebatch_idyinput_ids. Debe devolver una lista con los tokens permitidos para el siguiente paso de generación condicionado al ID del lotebatch_idy a los tokens generados previamenteinputs_ids. Este argumento es útil para la generación condicionada al prefijo, tal como se describe en Autoregressive Entity Retrieval. - synced_gpus (
bool, opcional, valor predeterminadoFalse) — Si se debe continuar ejecutando el bucle while hasta max_length (necesario para evitar bloqueos conFullyShardedDataParallely DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], opcional) — Parametrización ad hoc degenerate_configy/o kwargs adicionales específicos del modelo que se reenviarán a la funciónforwarddel modelo.
Devuelve
ModelOutput o torch.LongTensor
Un ModelOutput (si return_dict_in_generate=True
o cuando config.return_dict_in_generate=True) o un torch.Tensor. Los tipos posibles de
ModelOutput son:
Genera secuencias de ids de tokens.
La mayoría de los parámetros de control de generación se configuran en
generation_config, que, si no se pasa, se establecerá en la configuración de generación predeterminada del modelo. Puede invalidar cualquiergeneration_configpasando los parámetros correspondientes a generate(), por ejemplo,.generate(inputs, num_beams=4, do_sample=True).Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.
SeamlessM4Tv2ForSpeechToText
clase transformers.SeamlessM4Tv2ForSpeechToText
< source >( config: SeamlessM4Tv2Config )
Parámetros
- config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El transformer del modelo de voz a texto SeamlessM4Tv2, que puede utilizarse para S2TT.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( input_features: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Parámetros
- input_features (
torch.Tensorde forma(batch_size, sequence_length, num_banks)) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- decoder_input_ids (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Índices de los tokens de la secuencia de entrada del decodificador en el vocabulario. Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles. ¿Qué son los IDs de entrada del decodificador? Bart usa eos_token_id como token inicial para la generación de decoder_input_ids. Si se usa past_key_values, opcionalmente solo se deben ingresar los últimos decoder_input_ids (consulte past_key_values). Para el entrenamiento de traducción y resumen, se deben proporcionar decoder_input_ids. Si no se proporcionan decoder_input_ids, el modelo creará este tensor desplazando input_ids hacia la derecha para el preentrenamiento de desruido, siguiendo el artículo.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
¿Qué son los IDs de entrada del decodificador?
Bart utiliza
eos_token_idcomo el token inicial para la generación dedecoder_input_ids. Si se utilizapast_key_values, opcionalmente solo se deben introducir los últimosdecoder_input_ids(verpast_key_values).Para el entrenamiento de traducción y resumen, se debe proporcionar
decoder_input_ids. Si no se proporcionadecoder_input_ids, el modelo creará este tensor desplazandoinput_idshacia la derecha para el preentrenamiento de desruido, siguiendo el artículo. - decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Comportamiento predeterminado: genera un tensor que ignora los tokens de relleno endecoder_input_ids. La máscara causal también se usará de forma predeterminada. Si deseas cambiar el comportamiento de relleno, debes leer modeling_bart._prepare_decoder_attention_mask y modificarlo según tus necesidades. Consulta la figura 1 del artículo para obtener más información sobre la estrategia predeterminada.Si deseas cambiar el comportamiento del relleno, debes leer
modeling_bart._prepare_decoder_attention_masky modificarlo según tus necesidades. Consulta la figura 1 de el artículo para obtener más información sobre la estrategia predeterminada. - encoder_outputs (
tuple[tuple[torch.Tensor]], opcional) — La tupla consiste en (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_idspuede optar por pasar directamente una representación incrustada. Esto es útil si desea tener más control sobre cómo convertirinput_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional): Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en[-100, 0, ..., config.vocab_size](ver la docstring deinput_ids). Los tokens con índices establecidos en-100se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasardecoder_input_idspuede optar por pasar directamente una representación incrustada. Sipast_key_valuesse usa, opcionalmente solo la últimadecoder_inputs_embedsdebe ser introducida (verpast_key_values). Esto es útil si se desea tener más control sobre cómo convertirdecoder_input_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.Si
decoder_input_idsydecoder_inputs_embedsno están configurados,decoder_inputs_embedstoma el valor deinputs_embeds. - labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en[0, ..., config.vocab_size]o ser -100 (ver la docstring deinput_ids). Los tokens con índices establecidos en-100se ignoran (enmascarados); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size]. - use_cache (
bool, opcional) — Si se establece enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_key_values).
Devuelve
Seq2SeqLMOutput o tuple(torch.Tensor)
Un Seq2SeqLMOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (SeamlessM4Tv2Config) y las entradas.
El método forward de SeamlessM4Tv2ForSpeechToText sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de modelado de lenguaje.logits (
torch.Tensorde forma(batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).past_key_values (
EncoderDecoderCache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de EncoderDecoderCache. Para más detalles, consulte nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que pueden utilizarse (véase la entrada
past_key_values) para acelerar la decodificación secuencial.decoder_hidden_states (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del decodificador en la salida de cada capa más las salidas de la incrustación inicial.
decoder_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
cross_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.
encoder_last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.encoder_hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del codificador en la salida de cada capa más las salidas de la incrustación inicial.
encoder_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Ejemplo:
>>> from transformers import AutoProcessor, SeamlessM4Tv2ForSpeechToText
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4Tv2ForSpeechToText.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)
>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...generate
< source >( input_features = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor
Parámetros
- input_features (
torch.Tensorde forma(batch_size, sequence_length, num_banks)) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles. - tgt_lang (
str, opcional) — El idioma que se usará como idioma de destino para la traducción. - generation_config (
~generation.GenerationConfig, opcional) — La configuración de generación que se utilizará como parametrización base para la llamada de generación. Los**kwargspasados a generate que coincidan con los atributos degeneration_configlos sobrescribirán. Si no se proporcionageneration_config, se utilizará la predeterminada, que tiene la siguiente prioridad de carga: 1) desde el archivo de modelogeneration_config.json, si existe; 2) desde la configuración del modelo. Tenga en cuenta que los parámetros no especificados heredarán los valores predeterminados de GenerationConfig, cuya documentación debe consultarse para parametrizar la generación. - logits_processor (
LogitsProcessorList, opcional) — Procesadores de logits personalizados que complementan los procesadores de logits predeterminados creados a partir de los argumentos y la configuración de generación. Si se pasa un procesador de logits que ya fue creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados. - stopping_criteria (
StoppingCriteriaList, opcional) — Criterios de parada personalizados que complementan los criterios de parada predeterminados creados a partir de los argumentos y una configuración de generación. Si se pasa un criterio de parada que ya ha sido creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], opcional) — Si se proporciona, esta función restringe la búsqueda por haz a los tokens permitidos en cada paso. Si no se proporciona, no se aplica ninguna restricción. Esta función toma 2 argumentos: el ID del lotebatch_idyinput_ids. Debe devolver una lista con los tokens permitidos para el siguiente paso de generación condicionado al ID del lotebatch_idy a los tokens generados previamenteinputs_ids. Este argumento es útil para la generación condicionada al prefijo, tal como se describe en Autoregressive Entity Retrieval. - synced_gpus (
bool, opcional, valor predeterminadoFalse) — Si se debe continuar ejecutando el bucle while hasta max_length (necesario para evitar bloqueos conFullyShardedDataParallely DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], opcional) — Parametrización ad hoc degenerate_configy/o kwargs adicionales específicos del modelo que se reenviarán a la funciónforwarddel modelo.
Devuelve
ModelOutput o torch.LongTensor
Un ModelOutput (si return_dict_in_generate=True
o cuando config.return_dict_in_generate=True) o un torch.Tensor. Los tipos posibles de
ModelOutput son:
Genera secuencias de ids de tokens.
La mayoría de los parámetros de control de generación se configuran en
generation_config, que, si no se pasa, se establecerá en la configuración de generación predeterminada del modelo. Puede invalidar cualquiergeneration_configpasando los parámetros correspondientes a generate(), por ejemplo,.generate(inputs, num_beams=4, do_sample=True).Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.
SeamlessM4Tv2Config
clase transformers.SeamlessM4Tv2Config
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truevocab_size: int = 256102t2u_vocab_size: int = 10082char_vocab_size: int = 10943hidden_size: int = 1024initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_cache: bool = Truemax_position_embeddings: int = 4096encoder_layerdrop: float | int = 0.05decoder_layerdrop: float | int = 0.05activation_function: str = 'relu'dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.0scale_embedding: bool = Trueencoder_layers: int = 24encoder_ffn_dim: int = 8192encoder_attention_heads: int = 16decoder_layers: int = 24decoder_ffn_dim: int = 8192decoder_attention_heads: int = 16decoder_start_token_id: int = 3max_new_tokens: int | None = 256pad_token_id: int | None = 0bos_token_id: int | None = 2eos_token_id: int | list[int] | None = 3speech_encoder_layers: int = 24speech_encoder_attention_heads: int = 16speech_encoder_intermediate_size: int = 4096speech_encoder_hidden_act: str = 'swish'speech_encoder_dropout: float | int = 0.0add_adapter: bool = Truespeech_encoder_layerdrop: float | int = 0.1feature_projection_input_dim: int = 160adaptor_kernel_size: int = 8adaptor_stride: int = 8adaptor_dropout: float | int = 0.1num_adapter_layers: int = 1position_embeddings_type: str = 'relative_key'conv_depthwise_kernel_size: int = 31left_max_position_embeddings: int = 64right_max_position_embeddings: int = 8speech_encoder_chunk_size: int = 20000speech_encoder_left_chunk_num: int = 128t2u_bos_token_id: int | None = 0t2u_pad_token_id: int | None = 1t2u_eos_token_id: int | list[int] | None = 2t2u_encoder_layers: int = 6t2u_encoder_ffn_dim: int = 8192t2u_encoder_attention_heads: int = 16t2u_decoder_layers: int = 6t2u_decoder_ffn_dim: int = 8192t2u_decoder_attention_heads: int = 16t2u_max_position_embeddings: int = 4096t2u_variance_predictor_embed_dim: int = 1024t2u_variance_predictor_hidden_dim: int = 256t2u_variance_predictor_kernel_size: int = 3t2u_variance_pred_dropout: float | int = 0.5sampling_rate: int = 16000upsample_initial_channel: int = 512upsample_rates: list[int] | tuple[int, ...] = (5, 4, 4, 2, 2)upsample_kernel_sizes: list[int] | tuple[int, ...] = (11, 8, 8, 4, 4)resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5))leaky_relu_slope: float = 0.1unit_hifi_gan_vocab_size: int = 10000unit_embed_dim: int = 1280lang_embed_dim: int = 256spkr_embed_dim: int = 256vocoder_num_langs: int = 36vocoder_num_spkrs: int = 200variance_predictor_kernel_size: int = 3var_pred_dropout: float | int = 0.5vocoder_offset: int = 4tie_word_embeddings: bool = True )
Parámetros
- is_encoder_decoder (
bool, opcional, valor predeterminadoTrue) — Indica si el modelo se utiliza como codificador/decodificador o no. - vocab_size (
int, opcional, valor predeterminado256102) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse medianteinput_ids. - t2u_vocab_size (
int, opcional, valor predeterminado 10082) — Tamaño del vocabulario de unidades del modelo SeamlessM4Tv2. Define el número de diferentes “unit tokens” que pueden representarse mediante losinputs_idspasados al llamar al submodelo Text-To-Units de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech o ~SeamlessM4Tv2ForTextToSpeech. - char_vocab_size (
int, opcional, valor predeterminado 10943) — Tamaño del vocabulario de caracteres del modelo SeamlessM4Tv2. Define el número de tokens de caracteres diferentes que pueden representarse mediante loschar_inputs_idspasados al llamar al submodelo Text-To-Units de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech o ~SeamlessM4Tv2ForTextToSpeech. - hidden_size (
int, opcional, valor predeterminado1024) — Dimensión de las representaciones ocultas. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - layer_norm_eps (
float, opcional, valor predeterminado1e-05) — El epsilon utilizado por las capas de normalización de capa. - use_cache (
bool, opcional, valor predeterminadoTrue) — Indica si el modelo debe devolver las últimas claves/valores de atención (no utilizado por todos los modelos). Solo es relevante siconfig.is_decoder=Trueo cuando el modelo es un modelo generativo solo de decodificador. - max_position_embeddings (
int, opcional, valor predeterminado4096) — La longitud máxima de secuencia con la que se podría utilizar este modelo. - encoder_layerdrop (
Union[float, int], opcional, valor predeterminado0.05) — La probabilidad de LayerDrop para el codificador. Consulte el [artículo de LayerDrop](ver https://huggingface.co/papers/1909.11556) para más detalles. - decoder_layerdrop (
Union[float, int], opcional, valor predeterminado0.05) — La probabilidad de LayerDrop para el decodificador. Consulte el [artículo de LayerDrop](ver https://huggingface.co/papers/1909.11556) para más detalles. - activation_function (
str, opcional, valor predeterminadorelu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo,"gelu","relu","silu", etc. - dropout (
Union[float, int], opcional, valor predeterminado0.1) — La proporción para todas las capas de dropout. - attention_dropout (
Union[float, int], opcional, valor predeterminado0.1) — La proporción de dropout para las probabilidades de atención. - activation_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada. - scale_embedding (
bool, opcional, valor predeterminadoTrue) — Si se deben escalar los embeddings dividiendo por sqrt(d_model). - encoder_layers (
int, opcional, valor predeterminado24) — Número de capas ocultas en el codificador del Transformer. Usará el mismo valor quenum_layerssi no se establece. - encoder_ffn_dim (
int, opcional, valor predeterminado8192) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el codificador. - encoder_attention_heads (
int, opcional, valor predeterminado16) — Número de cabezas de atención para cada capa de atención en el codificador Transformer. - decoder_layers (
int, opcional, valor predeterminado24) — Número de capas ocultas en el decodificador del Transformer. Si no se establece, se usará el mismo valor quenum_layers. - decoder_ffn_dim (
int, opcional, valor predeterminado8192) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el decodificador. - decoder_attention_heads (
int, opcional, valor predeterminado16) — Número de cabezas de atención para cada capa de atención en el decodificador del Transformer. - decoder_start_token_id (
int, opcional, valor predeterminado3) — Si un modelo encoder-decoder inicia la decodificación con un token diferente debos, el id de ese token. - max_new_tokens (
int, opcional, valor predeterminado 256) — El número máximo de tokens de texto a generar, ignorando el número de tokens del prompt. - pad_token_id (
int, opcional, valor predeterminado0) — Id del token utilizado para el relleno en el vocabulario. - bos_token_id (
int, opcional, valor predeterminado2) — Id del token utilizado para el inicio de la secuencia en el vocabulario. - eos_token_id (
Union[int, list[int]], opcional, valor predeterminado3) — Identificador de token utilizado para el fin de secuencia en el vocabulario. - speech_encoder_layers (
int, opcional, valor predeterminado 24) — Número de capas ocultas en el codificador de voz Transformer. - speech_encoder_attention_heads (
int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el codificador de voz Transformer. - speech_encoder_intermediate_size (
int, opcional, valor predeterminado 4096) — Dimensión de la capa “intermedia” (es decir, de avance hacia adelante) del codificador de voz Transformer. - speech_encoder_hidden_act (
strofunction, opcional, valor predeterminado"swish") — La función de activación no lineal (función o cadena) en el codificador de voz. Si es una cadena, se admiten"gelu","relu","selu","swish"y"gelu_new". - speech_encoder_dropout (
float, opcional, valor predeterminado 0.0) — La probabilidad de dropout para todas las capas del codificador de voz. - add_adapter (
bool, opcional, valor predeterminadoTrue) — Añade una capa de adaptador sobre el codificador de voz. - speech_encoder_layerdrop (
float, opcional, valor predeterminado 0.1) — La probabilidad de LayerDrop para el codificador de voz. Consulte el [artículo de LayerDrop](ver https://huggingface.co/papers/1909.11556) para más detalles. - feature_projection_input_dim (
int, opcional, valor predeterminado 160) — Dimensión de entrada de la proyección de características de entrada del codificador de voz, es decir, la dimensión después de procesar los audios de entrada con SeamlessM4TFeatureExtractor. - adaptor_kernel_size (
int, opcional, valor predeterminado 8) — Tamaño del kernel de las capas convolucionales en la red adaptadora. Solo es relevante siadd_adapter is True. - adaptor_stride (
int, opcional, valor predeterminado 8) — Paso de las capas convolucionales en la red adaptadora. Solo es relevante siadd_adapter is True. - adaptor_dropout (
float, opcional, valor predeterminado 0.1) — La probabilidad de dropout para todas las capas del adaptador de voz. - num_adapter_layers (
int, opcional, valor predeterminado 1) — Número de capas convolucionales que deben usarse en la red del adaptador. Solo es relevante siadd_adapter is True. - position_embeddings_type (
str, opcional, valor predeterminado"relative_key") — Puede especificarse comorelative_key. Si se deja enNone, no se aplica ningún incrustado de posición relativa. Solo se aplica al codificador de voz. Para obtener más información sobre"relative_key", consulte Self-Attention with Relative Position Representations (Shaw et al.). - conv_depthwise_kernel_size (
int, opcional, valor predeterminado 31) — Tamaño del kernel de la capa convolucional depthwise 1D en los bloques Conformer. Solo se aplica al codificador de voz. - left_max_position_embeddings (
int, opcional, valor predeterminado 64) — Valor de recorte izquierdo para las posiciones relativas. - right_max_position_embeddings (
int, opcional, valor predeterminado 8) — Valor de recorte derecho para las posiciones relativas. - speech_encoder_chunk_size (
int, opcional, valor predeterminado 20000) — El tamaño de cada bloque de atención. - speech_encoder_left_chunk_num (
int, opcional, valor predeterminado 128) — Número de fragmentos a la izquierda hasta los cuales se permite la anticipación. - t2u_bos_token_id (
int, opcional, valor predeterminado 0) — El id del token de unidad beginning-of-stream. Solo se aplica al modelo seq2seq de texto a unidad. - t2u_pad_token_id (
int, opcional, valor predeterminado 1) — El identificador del token de unidad de relleno. Solo se aplica al modelo seq2seq de texto a unidad. - t2u_eos_token_id (
int, opcional, valor predeterminado 2) — El id del token de unidad end-of-stream. Solo se aplica al modelo seq2seq de texto a unidad. - t2u_encoder_layers (
int, opcional, valor predeterminado 6) — Número de capas ocultas en el codificador de texto a unidades del Transformer. - t2u_encoder_ffn_dim (
int, opcional, valor predeterminado 8192) — Dimensión de la capa “intermedia” (es decir, de retroalimentación) en el codificador de texto a unidades del Transformer. - t2u_encoder_attention_heads (
int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el codificador de texto a unidades del Transformer. - t2u_decoder_layers (
int, opcional, valor predeterminado 6) — Número de capas ocultas en el decodificador de texto a unidades del Transformer. - t2u_decoder_ffn_dim (
int, opcional, valor predeterminado 8192) — Dimensión de la capa “intermedia” (es decir, de avance hacia adelante) en el decodificador de texto a unidades del Transformer. - t2u_decoder_attention_heads (
int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el decodificador de texto a unidades del Transformer. - t2u_max_position_embeddings (
int, opcional, valor predeterminado 4096) — La longitud máxima de secuencia con la que podría usarse este componente de texto a unidad del modelo. Por lo general, se establece este valor en un número grande por si acaso (p. ej., 512 o 1024 o 2048). - t2u_variance_predictor_embed_dim (
int, opcional, valor predeterminado 1024) — La dimensión de proyección del predictor de duración de text-to-unit. - t2u_variance_predictor_hidden_dim (
int, opcional, valor predeterminado 256) — Dimensión interna del predictor de duración de text-to-unit. - t2u_variance_predictor_kernel_size (
int, opcional, valor predeterminado 3) — Tamaño del kernel de las capas convolucionales del predictor de duración de text-to-unit. - t2u_variance_pred_dropout (
float, opcional, valor predeterminado 0.5) — La probabilidad de dropout del predictor de duración de text-to-unit. - sampling_rate (
int, opcional, valor predeterminado16000) — La tasa de muestreo a la que deben digitalizarse los archivos de audio, expresada en hercios (Hz). - upsample_initial_channel (
int, opcional, valor predeterminado 512) — El número de canales de entrada en la red de remuestreo ascendente de hifi-gan. Se aplica solo al vocoder. - upsample_rates (
tuple[int]olist[int], opcional, valor predeterminado[5, 4, 4, 2, 2]) — Una tupla de enteros que define el paso (stride) de cada capa de convolución 1D en la red de remuestreo ascendente (upsampling) del vocoder. La longitud de upsample_rates define el número de capas de convolución y debe coincidir con la longitud de upsample_kernel_sizes. Se aplica solo al vocoder. - upsample_kernel_sizes (
tuple[int]olist[int], opcional, valor predeterminado[11, 8, 8, 4, 4]) — Una tupla de enteros que define el tamaño del kernel de cada capa convolucional 1D en la red de remuestreo ascendente del vocoder. La longitud de upsample_kernel_sizes define el número de capas convolucionales y debe coincidir con la longitud de upsample_rates. Se aplica solo al vocoder. - resblock_kernel_sizes (
tuple[int]olist[int], opcional, valor predeterminado[3, 7, 11]) — Una tupla de enteros que define los tamaños de los núcleos de las capas convolucionales 1D del vocoder en el módulo de fusión de campos receptivos múltiples (MRF). Se aplica solo al vocoder. - resblock_dilation_sizes (
tuple[tuple[int]]olist[list[int]], opcional, valor predeterminado[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — Una tupla anidada de enteros que define las tasas de dilatación de las capas de convolución 1D dilatada del vocoder en el módulo de fusión de campos receptivos múltiples (MRF). Se aplica solo al vocoder. - leaky_relu_slope (
float, opcional, valor predeterminado 0.1) — El ángulo de la pendiente negativa utilizado por la activación leaky ReLU en el vocoder. Se aplica solo al vocoder. - unit_hifi_gan_vocab_size (
int, opcional, valor predeterminado 10000) — Tamaño del vocabulario del vocoder de SeamlessM4Tv2. Define el número de tokens de unidad diferentes que pueden representarse mediante losinputs_idspasados al llamar al vocoder de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech o ~SeamlessM4Tv2ForTextToSpeech. - unit_embed_dim (
int, opcional, valor predeterminado 1280) — La dimensión de proyección de los ids de entrada dados al vocoder hifi-gan. Se aplica solo al vocoder. - lang_embed_dim (
int, opcional, valor predeterminado 256) — La dimensión de proyección del idioma objetivo que se proporciona al vocoder hifi-gan. Se aplica solo al vocoder. - spkr_embed_dim (
int, opcional, valor predeterminado 256) — La dimensión de proyección del id del hablador que se proporciona al vocoder hifi-gan. Se aplica solo al vocoder. - vocoder_num_langs (
int, opcional, valor predeterminado 36) — Número de idiomas admitidos por el vocoder. Puede ser diferente det2u_num_langs. - vocoder_num_spkrs (
int, opcional, valor predeterminado 200) — Número de hablantes admitidos por el vocoder. - variance_predictor_kernel_size (
int, opcional, valor predeterminado 3) — Tamaño del kernel del predictor de duración. Se aplica solo al vocoder. - var_pred_dropout (
float, opcional, valor predeterminado 0.5) — La probabilidad de dropout del predictor de duración. Se aplica solo al vocoder. - vocoder_offset (
int, opcional, valor predeterminado 4) — Desplaza los ids de tokens de unidad en este número para tener en cuenta los tokens de símbolo. Se aplica solo al vocoder. - tie_word_embeddings (
bool, opcional, valor predeterminadoTrue) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel modelo.
Esta es la clase de configuración para almacenar la configuración de un SeamlessM4Tv2Model. Se utiliza para instanciar un modelo Seamless M4T V2 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de facebook/hf-seamless-m4t-medium
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
>>> from transformers import SeamlessM4Tv2Model, SeamlessM4Tv2Config
>>> # Initializing a SeamlessM4Tv2 "" style configuration
>>> configuration = SeamlessM4Tv2Config()
>>> # Initializing a model from the "" style configuration
>>> model = SeamlessM4Tv2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config