<> 5 de julio de 2024: Lanzamiento del último punto de control AR: mayor estabilidad de la producción. ¡Próximamente una gran actualización!
Este es el repositorio del modelo de habla en inglés (TTS) MARS5 de CAMB.AI.
El modelo sigue un proceso AR-NAR de dos etapas con un componente NAR distintivamente novedoso (ver más información en Arquitectura).
Con solo 5 segundos de audio y un fragmento de texto, MARS5 puede generar voz incluso para escenarios diversos y prosódicamente difíciles, como comentarios deportivos, anime y más. Vea nuestra demostración:
Mira el vídeo completo aquí:
Figura : El flujo de arquitectura de alto nivel de MARS5. Dado un texto y un audio de referencia, las características de voz del codificador aproximado (L0) se obtienen mediante un modelo de transformador autorregresivo. Luego, el texto, la referencia y las características generales se refinan en un modelo DDPM multinomial para producir los valores restantes del libro de códigos del codificador. Luego, la salida del DDPM se codifica para producir el audio final.
Debido a que el modelo está entrenado con audio sin formato junto con texto codificado por pares de bytes, se puede controlar con cosas como puntuación y uso de mayúsculas. Por ejemplo, para agregar una pausa, agregue una coma a esa parte de la transcripción. O, para enfatizar una palabra, colóquela en letras mayúsculas en la transcripción. Esto permite una forma bastante natural de guiar la prosodia del resultado generado.
La identidad del hablante se especifica utilizando un archivo de referencia de audio de entre 2 y 12 segundos, con duraciones de alrededor de 6 segundos que dan resultados óptimos. Además, al proporcionar la transcripción de la referencia, MARS5 permite realizar una " clonación profunda " que mejora la calidad de la clonación y la salida, a costa de tardar un poco más en producir el audio. Para obtener más detalles sobre este y otros detalles de rendimiento y modelo, consulte la carpeta de documentos.
Usamos torch.hub
para facilitar la carga del modelo: no es necesario clonar el repositorio. Los pasos para realizar la inferencia son simples:
Instalación usando pip :
Requisitos:
pip install --upgrade torch torchaudio librosa vocos encodec safetensors regex
import torch , librosa
mars5 , config_class = torch . hub . load ( 'Camb-ai/mars5-tts' , 'mars5_english' , trust_repo = True )
# The `mars5` contains the AR and NAR model, as well as inference code.
# The `config_class` contains tunable inference config settings like temperature.
(Opcional) Cargue el modelo desde huggingface (asegúrese de que el repositorio esté clonado)
from inference import Mars5TTS , InferenceConfig as config_class
import torch , librosa
mars5 = Mars5TTS . from_pretrained ( "CAMB-AI/MARS5-TTS" )
# Load reference audio between 1-12 seconds.
wav , sr = librosa . load ( '.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = ""
Nota: La transcripción de referencia es opcional. Pásalo si deseas hacer un clon profundo.
MARS5 admite 2 tipos de inferencia: una inferencia superficial y rápida en la que no se necesita la transcripción de la referencia (a esto lo llamamos clon superficial ), y una segunda forma más lenta, pero normalmente de mayor calidad, a la que llamamos clon profundo . Para utilizar el clon profundo, necesita la transcripción inmediata. Consulte la arquitectura del modelo para obtener más información sobre esto.
# Pick whether you want a deep or shallow clone. Set to False if you don't know prompt transcript or want fast inference. Set to True if you know transcript and want highest quality.
deep_clone = True
# Below you can tune other inference settings, like top_k, temperature, top_p, etc...
cfg = config_class ( deep_clone = deep_clone , rep_penalty_window = 100 ,
top_k = 100 , temperature = 0.7 , freq_penalty = 3 )
ar_codes , output_audio = mars5 . tts ( "The quick brown rat." , wav ,
ref_transcript ,
cfg = cfg )
# output_audio is (T,) shape float tensor corresponding to the 24kHz output audio.
¡Eso es todo! Estas configuraciones predeterminadas brindan resultados bastante buenos, pero siéntase libre de ajustar las configuraciones de inferencia para optimizar el resultado para su caso de uso particular. Consulte el código InferenceConfig
o el cuaderno de demostración para obtener información y documentos sobre las diferentes configuraciones de inferencia.
Algunos consejos para una mejor calidad:
Extraer de DockerHub
Puede extraer directamente la imagen de la ventana acoplable desde nuestra página de DockerHub.
Construye por tu cuenta
Puede crear una imagen personalizada a partir del Dockerfile proporcionado en este repositorio ejecutando el siguiente comando.
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
Nota: Esta imagen debe usarse como imagen base sobre la cual puede agregar su script de inferencia personalizado en un Dockerfile o docker-compose. Las imágenes que generan resultados directamente se agregarán pronto a Docker Hub y como Dockerfiles en este repositorio.
Puntos de control
Los puntos de control para MARS5 se proporcionan en la pestaña de versiones de este repositorio de github. Proporcionamos dos puntos de control:
'vocab'
y sigue aproximadamente el mismo formato de un tokenizador minbpe guardado. Los puntos de control se proporcionan como puntos de control pytorch .pt
y como puntos de control safetensors .safetensors
. De forma predeterminada, torch.hub.load()
carga la versión de los tensores de seguridad, pero puede especificar qué versión del punto de control prefiere con el argumento ckpt_format='safetensors'
o ckpt_format='pt'
en la torch.hub.load()
. Por ejemplo, para forzar el formato de los tensores de seguridad:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
O para forzar el formato pytorch .pt
al cargar los puntos de control:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
Requisitos de hardware :
Debe poder almacenar al menos 750 M+450 M de parámetros en la GPU y realizar inferencias con 750 M de parámetros activos.
Si no tiene los requisitos de hardware necesarios y solo desea utilizar MARS5 en sus aplicaciones, puede utilizarlo a través de nuestra API. Si necesita algunos créditos adicionales para probarlo en su caso de uso, no dude en comunicarse con [email protected]
.
MARS5 no es perfecto en este momento y estamos trabajando para mejorar su calidad, estabilidad y rendimiento. Áreas difíciles que buscamos mejorar y agradecemos cualquier contribución en:
Tareas específicas
site-packages/torch/nn/functional.py:4840: UserWarning: The operator 'aten::col2im' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications
. Si desea contribuir con alguna mejora a MARS5, no dude en hacerlo (pautas a continuación).
Agradecemos cualquier contribución para mejorar el modelo. Como puede descubrir al experimentar, puede producir resultados realmente excelentes; aún se puede mejorar aún más para crear resultados excelentes de manera consistente . También nos encantaría ver cómo usó MARS5 en diferentes escenarios. Utilice el botón ? Muestra y cuenta la categoría en Discusiones para compartir tus ejemplos.
Formato de contribución :
La forma preferida de contribuir a nuestro repositorio es bifurcar el repositorio maestro en GitHub:
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin
Somos MARS5 de código abierto en inglés bajo GNU AGPL 3.0. Para consultas comerciales o para obtener una licencia de la versión de código cerrado de MARS, envíe un correo electrónico a [email protected]
Somos un equipo ambicioso, distribuido globalmente, con el objetivo singular de hacer que la voz de todos cuente. En CAMB.AI, somos un equipo de investigación de ex ingenieros de Siri, publicados en Interspeech, Carnegie Mellon, y estamos buscando que usted se una a nuestro equipo.
Estamos contratando activamente; envíenos un correo electrónico a [email protected] si está interesado. Visite nuestra página de carreras para obtener más información.
Únase a la comunidad CAMB.AI en Foro y Discord para compartir sugerencias, comentarios o preguntas con nuestro equipo.
Partes del código de este proyecto están adaptadas de los siguientes repositorios. ¡Asegúrese de revisarlos! Gracias a los autores de:
.trim()
: https://librosa.org/doc/main/generated/librosa.effects.trim.html