5 puntos por GN⁺ 2024-01-02 | 1 comentarios | Compartir por WhatsApp
  • Apunta al problema de Zero-shot TTS, funcionando sin entrenamiento adicional por hablante para clonar el timbre de un hablante a partir de un audio de referencia corto y hacerlo hablar en varios idiomas
  • La clave es una arquitectura que separa la clonación de timbre del control de idioma y estilo: el base speaker TTS genera emoción, acento, ritmo, pausas e entonación, y el tone color converter aplica el timbre del hablante de referencia
  • Permite clonación zero-shot cross-lingual incluso sin grandes datos de entrenamiento multihablante para un idioma nuevo; para el entrenamiento se usaron 30K oraciones para el base TTS y 20K personas con 300K muestras de audio para el converter
  • Toda la implementación funciona con una arquitectura feed-forward sin componentes autorregresivos ni de difusión; la versión optimizada logra 12× tiempo real en una sola GPU A10G y tarda 85 ms en generar 1 segundo de voz
  • Se publicaron el código fuente y los pesos del modelo; OpenVoice se ofreció como motor de voz de MyShell.ai a más de 2 millones de personas en todo el mundo, y su versión interna se usó decenas de millones de veces entre mayo y octubre de 2023

El problema de clonación de voz instantánea al que apunta OpenVoice

  • La clonación de voz instantánea (IVC) es un TTS que replica la voz de un hablante específico a partir de un audio de referencia corto, y también se conoce como Zero-shot TTS porque funciona sin entrenamiento adicional por hablante
  • Sus casos de uso abarcan desde producción de contenido multimedia y chatbots personalizados hasta la interacción multimodal entre humanos y computadoras o grandes modelos de lenguaje
  • Los enfoques existentes tienen limitaciones, respectivamente, en velocidad, control y escalabilidad entre idiomas
    • Los métodos autorregresivos como VALLE y XTTS clonan el timbre usando acoustic tokens o speaker embeddings de la voz de referencia como condición, pero es difícil manipular con flexibilidad estilos como emoción, acento, ritmo, pausas e entonación
    • Los métodos no autorregresivos como YourTTS y Voicebox son rápidos en inferencia, pero no permiten controlar con flexibilidad parámetros de estilo más allá del timbre
    • La clonación de voz cross-lingual existente normalmente requiere un dataset MSML con muchos hablantes para cada idioma, lo que dificulta agregar idiomas nuevos
  • OpenVoice aborda tres objetivos al mismo tiempo
    • Clonar el timbre del hablante de referencia mientras controla por separado emoción, acento, ritmo, pausas e entonación
    • Realizar clonación cross-lingual incluso cuando el idioma del hablante de referencia o el idioma generado no están en los datos de entrenamiento MSML
    • Ofrecer inferencia rápida en tiempo real a escala comercial sin degradación de calidad

Arquitectura que separa timbre y estilo

  • La idea central de OpenVoice es no hacer que un solo modelo grande aprenda al mismo tiempo timbre, idioma y estilo, sino dividirlo en subtareas más sencillas
  • El base speaker TTS model se encarga del idioma y el estilo
    • Puede usarse un modelo TTS de un solo hablante o multihablante
    • VITS puede modificarse para inyectar embeddings de estilo e idioma en el text encoder y el duration predictor
    • InstructTTS puede recibir prompts de estilo
    • También pueden usarse modelos comerciales como Microsoft TTS, que permiten especificar emoción, pausas y articulación con SSML
    • Una persona también puede leer directamente el texto con el estilo e idioma deseados para crear una base voice
    • En la implementación pública se usa VITS por defecto
  • El tone color converter transforma la voz del base speaker al timbre del hablante de referencia
    • El encoder es una red neuronal convolucional 1D que recibe como entrada el short-time Fourier transformed spectrum de la voz del base speaker
    • El tone color extractor es una red neuronal convolucional 2D que extrae de un mel-spectrogram un solo vector con información de timbre
    • El normalizing flow elimina la información de timbre de la voz base mientras conserva idioma y estilo
    • Esta representación se alinea en el eje temporal con features basadas en IPA
    • El inverse flow aplica un nuevo timbre al feature map condicionándolo con el vector de timbre del hablante de referencia
    • HiFi-GAN genera la raw waveform final
  • El modelo completo de la implementación pública funciona de forma feed-forward sin componentes autorregresivos
  • Los métodos de extracción de units basados en HuBERT tienen el problema de eliminar no solo información de timbre sino también emoción y entonación
  • Otros métodos que introducen un cuello de botella de información para conservar solo el contenido de voz no logran eliminar completamente el timbre
  • La novedad de OpenVoice no está tanto en inventar submódulos individuales como en el framework que separa el control de estilo e idioma de la clonación de timbre

Datos de entrenamiento y objetivos de aprendizaje

  • Para entrenar el base speaker TTS se usaron datos de 4 hablantes
    • 1 hablante de inglés estadounidense, 1 de inglés británico, 1 de chino y 1 de japonés
    • Un total de 30K oraciones, con una duración promedio de 7 segundos por oración
    • Los datos en inglés y chino incluyen etiquetas de clasificación de emoción
  • El VITS modificado introduce emotion categorical embedding, language categorical embedding y speaker id en el text encoder, el duration predictor y la flow layer
  • El modelo base entrenado cambia acento e idioma cambiando el base speaker, y puede leer el texto de entrada con distintas emociones
  • En experimentos con datos de entrenamiento adicionales, ritmo, pausas e intonación también pueden aprenderse del mismo modo que la emoción
  • Para entrenar el tone color converter se usaron 20K personas con 300K muestras de audio
    • Aproximadamente 180K muestras en inglés
    • Aproximadamente 60K muestras en chino
    • Aproximadamente 60K muestras en japonés
    • A este dataset se le llama dataset MSML
  • El objetivo de entrenamiento del converter tiene dos partes
    • Se usan mel-spectrogram loss y HiFi-GAN loss para que el encoder-decoder produzca sonidos naturales
    • Se entrena la flow layer para eliminar en la mayor medida posible la información de timbre de los features de audio
  • El aprendizaje para remover timbre convierte el texto en secuencias de IPA phonemes, luego crea text content features con embeddings aprendibles y un transformer encoder, los alinea con los audio features mediante dynamic time warping y minimiza la KL-divergence
  • La flow layer está diseñada para no eliminar información distinta al timbre, ya que no recibe estilo ni idioma como condición
  • Como la flow layer tiene una estructura invertible, al ejecutar el proceso inverso condicionándolo con nueva información de timbre se puede volver a insertar el timbre del hablante de referencia conservando el mismo contenido y estilo

Resultados experimentales y limitaciones observadas

  • La evaluación de clonación de voz es difícil de comparar objetivamente entre estudios porque cambian el set de entrenamiento, el set de prueba y las condiciones de evaluación con Mean Opinion Score
  • La evaluación de OpenVoice se enfoca menos en comparaciones numéricas con métodos previos y más en análisis cualitativo propio y muestras de audio públicas
  • El set de prueba de clonación de timbre incluye hablantes de referencia como celebridades, personajes de videojuegos y personas anónimas
    • Incluye tanto voces distintivas y muy expresivas como muestras más neutras dentro de la distribución de voces humanas
    • En combinaciones de 4 base speakers con varios hablantes de referencia, clona el timbre de referencia y genera voz en varios idiomas y acentos
  • La evaluación de control de estilo convierte al timbre de referencia un corpus de 1K muestras de estilos variados creado con el base speaker model y con Microsoft TTS SSML
    • Se preservan bien emoción, acento, ritmo, pausas e entonación
    • En casos raros, la emoción se neutraliza ligeramente
    • Este problema se atenúa si el tone color embedding vector de una oración específica se reemplaza por el vector promedio obtenido de varias oraciones con distintas emociones del mismo base speaker
  • La clonación cross-lingual funciona en modo near zero-shot para idiomas que no están en el dataset MSML
    • Puede clonar el timbre del hablante de referencia aunque el idioma de ese hablante no esté en el dataset MSML
    • También puede hacer hablar en ese timbre un idioma que no esté en el dataset MSML si el base speaker TTS soporta ese idioma
    • Aun así, se necesita un base speaker para ese idioma
  • En las pruebas de velocidad, OpenVoice optimizado alcanza 12× tiempo real en una sola GPU A10G incluyendo el base speaker model y el tone converter
    • Tarda 85 ms en generar 1 segundo de voz
    • Según el análisis de uso de GPU, el límite superior estimado es de alrededor de 40× tiempo real, pero esa mejora queda como trabajo futuro
  • El uso de IPA es importante para la conversión de timbre cross-lingual
    • IPA actúa como un diccionario fonémico unificado entre idiomas, lo que permite a la flow layer crear una representación neutral al idioma
    • En experimentos con otros diccionarios fonémicos apareció una tendencia a pronunciar incorrectamente algunos fonemas de idiomas no vistos durante el entrenamiento
    • Incluso si el audio de entrada es correcto, aumenta la posibilidad de que el audio de salida tenga problemas o suene como de una persona no nativa

Materiales públicos y uso

  • OpenVoice publicó el código fuente y los modelos entrenados para facilitar la reproducción de la investigación y trabajos posteriores
  • Los resultados cualitativos pueden verse en el demo de OpenVoice
  • Los demos detallados se dividen en las siguientes categorías
  • Antes de su publicación, la versión interna se usó decenas de millones de veces por usuarios de todo el mundo entre mayo y octubre de 2023
  • En MyShell.ai, OpenVoice se usó como backend de clonación de voz instantánea y la plataforma experimentó un crecimiento de usuarios de varios cientos de veces
  • Actualmente, OpenVoice se ofrece como motor de voz de MyShell.ai a más de 2 millones de personas en todo el mundo

1 comentarios

 
GN⁺ 2024-01-02
Comentarios de Hacker News
  • Está bueno que los autores lo hayan hecho fácil de probar de inmediato, pero no me funcionó bien para usos generales de clonación de voz.
    Hice que leyera el primer párrafo de Wikipedia sobre un libro y luego generé la siguiente oración, pero al oído suena claramente como algo hecho por computadora.
    Muestra de audio: https://storage.googleapis.com/dalle-party/sample.mp3
    Voz clonada (conversión a mp3): https://storage.googleapis.com/dalle-party/output_en_default...
    Solo instalé el paquete con pip, puse una muestra de audio y ejecuté demo_part1.ipynb; terminó casi al instante en una laptop con 3070 Ti / 8GB.

    • En el README también dice que es una implementación open source que aproxima el rendimiento de la tecnología interna de clonación de voz, y que la versión online de myshell.ai es mejor en calidad de audio, similitud de la clonación, naturalidad del habla y eficiencia de cómputo.
    • Se agradece el ejemplo real; a mis oídos también suena bastante generado.
      Me pregunto cuánto mejoraría si se le diera más material de voz original.
    • Por el sitio web y los ejemplos, parece estar configurado con bastante claridad para crear voces de anime estilizadas.
    • Por mi experiencia usando otras herramientas como xtts, para obtener los mejores resultados de verdad se necesitan muestras de voz con calidad de estudio.
  • Me pregunto si con esto, o con Eleven Labs, se podría crear un modelo de voz para enchufarlo al TTS de un teléfono Android.
    Un amigo con parálisis de laringe suele comunicarse escribiendo en su teléfono o en una laptop pequeña.
    Si pudiera tomar su voz de grabaciones antiguas y devolverle aunque sea un poco de “su” voz, creo que le encantaría.

    • Podrías mirar soluciones como Acapela [0], SpeakUnique [1] y VOCALiD [2].
      Aunque no estoy seguro de si existe una solución para Android.
      Hace poco vi un video de una voz personalizada que Google hizo para pacientes con ELA, pero no logro encontrarlo online.
      En Android todavía no se ofrece generación de voz personalizada, pero el iOS 17 más reciente sí admite generación de voz personalizada.
      ModelTalker [3] parece ser un proyecto de investigación de largo plazo sobre generación de voces personalizadas para personas con trastornos del habla, y su TTS parece soportar Android, así que podría ser otra opción.
      [0] https://www.acapela-group.com/
      [1] https://www.speakunique.co.uk/
      [2] https://vocalid.ai/
      [3] https://www.modeltalker.org/
    • Lamentablemente, ahora mismo no se puede.
      Contribuí al TTS en Google y también trabajé en Android; en iOS esta función viene integrada.
      No hay product manager de Google más poderoso que “algo que Apple acaba de lanzar”, así que quizá sea una señal esperanzadora.
      Ahora estoy trabajando en inferencia on-device multiplataforma, puedes revisar FONNX en GitHub, y esto es una de esas 100 cosas que se me van a quedar dando vueltas por un tiempo, así que si tengo tiempo me pondré en contacto.
      Edición: ¿una app de Android con un teclado y un botón de “hablar” que llame a la API de Eleven Labs sería suficiente como para valer la pena probar?
  • GitHub: https://github.com/myshell-ai/OpenVoice
    Checkpoints: hxxps://myshell-public-repo-hosting.s3.amazonaws.com/checkpoints_1226.zip
    Me da mala espina poner un enlace directo a un archivo zip alojado en Amazon, así que desactivé el enlace a los checkpoints.
    Tampoco revisé qué contiene el archivo.

  • Me gusta este paper.
    Se lee como “lo hicimos así y queremos ayudar a que otros también puedan hacerlo”.
    En particular, la sección “Remark on Novelty” es excelente: dice que OpenVoice no intenta inventar submódulos de la arquitectura del modelo, sino que su aporte es un framework que separa el control del estilo de voz y del idioma de la clonación del timbre.
    No intenta exagerar su contribución.

  • Ejemplos: https://research.myshell.ai/open-voice
    Se ve bastante impresionante.

  • La licencia es Creative Commons Attribution-NonCommercial 4.0 International License, así que prohíbe el uso comercial, y dice que MyShell puede detectar si un audio fue generado con OpenVoice, tenga o no marca de agua.
    Entonces, ¿no es “open”, y tampoco se puede ganar dinero con esto?

    • Sí es open, solo que no según tu definición.
      Puedes ver el código, usarlo y modificarlo todo lo que quieras, así que me parece bastante abierto.
    • No se puede ganar dinero.
      Claro que los estafadores a los que no les importan las licencias no comerciales sí podrían.
  • No está muy promocionada y no sé si Apple la sigue desarrollando, pero iOS tiene una función de clonación de voz llamada Personal Voice
    Toma unos 15 minutos entrenarla con tu propia voz, y luego tarda varias horas en procesarse en el dispositivo mientras está bloqueado
    Se puede usar en llamadas telefónicas y FaceTime, y no sé si también en otros lugares
    Sería bueno que también se pudiera usar con TTS general

    • Esta es una función de accesibilidad para personas que están perdiendo la voz o corren el riesgo de perderla
      Por la forma en que se dice que puede usarse en llamadas o FaceTime, suena como conversión de voz a voz, pero en realidad es solo para TTS
      Como no es conversión de voz a voz, no conserva señales que hacen que se sienta como una voz real, como características de tartamudeo o la prosodia
  • Hace unos días llamé a uno de los grandes bancos comerciales del Reino Unido, y todavía me estaban recomendando inscribirme en su estúpido programa de “mi voz es mi contraseña
    Con lo lejos que ha llegado la IA, esto ya se siente simplemente negligente

    • Fidelity Investments hizo algo peor hace alrededor de una semana
      Me pidió responder algunas preguntas y luego me informó que acababa de quedar inscrito en su programa de identificación por voz
      Ahora cancelar eso es una cosa más en mi lista de pendientes
      Me pregunto si todas las empresas ascienden a los más tontos a puestos directivos
    • ¿Investec, quizá? Creo que yo también tendré que llamar para desactivarlo
  • Lo primero que se me ocurrió, y sigo pensando igual, es que los usos inmorales y delictivos de la clonación de voz probablemente serán mucho más numerosos que los usos legítimos

    • Lo primero que se me viene a la mente es el anonimato
      Podrías hacer videos de YouTube sin usar tu voz real, pero manteniendo acentos y énfasis personales que una voz de IA TTS no puede lograr
      O también podría usarse en el desarrollo de juegos indie
      Aprendes actuación de voz básica para reducir lo incómodo, y puedes interpretar tú mismo a todos los personajes con varias voces
    • Me pregunto qué casos de uso legítimos has considerado, y en qué medida
    • ¿Qué tal cuando los usos comerciales superen a los ilegales?
      YouTube permitirá que la gente escuche idiomas localizados con la voz del creador original
    • No estoy de acuerdo
      Simplemente no deberíamos aceptar la voz como medio de autenticación
      Creo que el uso más común será crear arte y contenido de forma programática sin actores de voz
      Cuando se complete el pipeline de video o modelos 3D y la transformación fotograma por fotograma para que se vea realista, es muy probable que casi tampoco se necesiten actores
    • Basta con hablarlo de antemano con tus seres queridos y definir una frase clave para situaciones como estar atrapado en una emergencia y necesitar que te transfieran dinero
      Algunos bancos usan autenticación por voz cuando llamas, y solo puedes salirte si lo solicitas explícitamente