VALL-E-X es una implementación de código abierto del modelo de síntesis de voz de Microsoft VALL-E X, capaz de generar voz de alta calidad a partir de texto. Este artículo detalla el proceso de preprocesamiento de texto necesario para utilizar VALL-E-X, cubriendo la tokenización multilingüe y la extracción de características de audio, proporcionando una guía completa para principiantes.
El preprocesamiento de texto es fundamental para la síntesis de voz de alta fidelidad con VALL-E-X. Incluye la limpieza del texto, la segmentación en unidades fonéticas y la conversión a representaciones numéricas que el modelo pueda procesar. El siguiente diagrama ilustra el flujo general del preprocesamiento de texto dentro de la arquitectura de VALL-E-X:
Diagrama de arquitectura de VALL-E-X, destacando el lugar del preprocesamiento de texto en el pipeline de TTS.
Componentes Clave del Preprocesamiento de Texto
- Limpieza de Texto: Eliminación de caracteres no deseados, signos de puntuación y formato inconsistente.
- Segmentación (Tokenización): División del texto en unidades significativas, como palabras o fonemas.
- Extracción de Características de Audio: Transformación de las unidades de texto segmentadas en vectores numéricos que representan las características del habla.
Módulo de Procesamiento de Texto Multilingüe
VALL-E-X soporta el procesamiento de texto en varios idiomas a través de módulos ubicados en el directorio utils/g2p. Este directorio contiene herramientas específicas para lenguajes como el chino, inglés y japonés.
Conversión de Grafema a Fonema (G2P) Multilingüe
La conversión de Grafema a Fonema (G2P) es crucial para mapear secuencias de caracteres a sus correspondientes representaciones fonéticas. VALL-E-X implementa G2P para diferentes idiomas:
- Chino G2P: El script
utils/g2p/mandarin.pymaneja la conversión de caracteres chinos a Pinyin, oferciendo flexibilidad en la representación del Pinyin. - Inglés G2P: El archivo
utils/g2p/english.pyproporciona funcionalidad para convertir texto en inglés a Alfabeto Fonético Internacional (IPA). - Japonés G2P: El módulo
utils/g2p/japanese.pyse encarga de la transformación de texto japonés a su representación en Romaji y IPA.
Estos módulos G2P están orquestados por utils/g2p/__init__.py, que ofrece una interfaz unificada para su uso en otras partes del sistema.
Herramientas de Limpieza de Texto
El archivo utils/g2p/cleaners.py contiene utilidades para la limpieza de texto. Estas funciones normalizan el texto eliminando caracteres especiales y corrigiendo formatos, preparando así la entrada para los subsiguientes pasos de procesamiento y asegurando compatibilidad con diferentes lenguajes.
Implementación de Segmentación y Tokenización
La segmentación del texto en unidades procesables por el modelo se realiza mediante el archivo data/tokenizer.py. Este módulo transforma el texto en secuencias de identiifcadores numéricos.
Inicialización y Uso del Tokenizador
Dentro de data/dataset.py, la inicialización del tokenizador se realiza de la siguiente manera:
self.tokenizer = Tokenizer.from_file(tokenizer_path)
Posteriormente, el tokenizador se utiliza para codificar el texto:
cptpho_tokens = self.tokenizer.encode(text).ids
VALL-E-X incluye varios modelos Byte-Pair Encoding (BPE) de diferentes tamaños, como utils/g2p/bpe_1024.json y utils/g2p/bpe_69.json, permitiendo la selección del modelo de tokenización más adecuado para la tarea específica.
Flujo de Extracción de Características de Audio
El objetivo final del preprocesamiento de texto es la generación de características de audio. La función tokenize_audio en data/tokenizer.py maneja esta conversión:
def tokenize_audio(tokenizer: AudioTokenizer, audio):
wav = convert_audio(wav, sr, tokenizer.sample_rate, tokenizer.channels)
encoded_frames = tokenizer.encode(wav)
Esta función procesa el audio, lo resamplea a la frecuencia de muestreo del tokenizador y lo codifica en un formato de características que el modelo de síntesis puede utilizar.
Ejemplo de Aplicación Práctica
Para comenzar con el preprocesamiento de texto usando VALL-E-X, primero clonar el repositorio del proyecto:
git clone https://gitcode.com/gh_mirrors/va/VALL-E-X
El archivo examples.py contiene código de ejemplo que demuestra el flujo completo de preprocesamiento de texto. Ajustando los parámetros en estos ejemplos, los usuarios pueden experimentar con el preprocesamiento de texto multilingüe para la síntesis de voz.
VALL-E-X proporciona capacidades robustas para el preprocesamiento de texto, incluyendo la tokenización multilingüe y la extracción de características de audio. Siguiendo los pasos descritos, los usuarios pueden implementar eficazmente estas funciones para lograr una síntesis de voz de alta calidad. El modelo ofrece un manejo eficiente y preciso de texto en varios idiomas, facilitando la generación de resultados de voz sobresalientes.