<Inglés | 简体中文 | 繁體中文>
Este repositorio ofrece una implementación de C ++ de Melotts, que es una biblioteca multilingüe de texto a voz multilingüe (TTS) lanzada por MyShell.ai que admite inglés, chino (mezclado con inglés) y otros idiomas. Esta implementación está totalmente integrada con OpenVino, admitiendo la implementación perfecta en dispositivos CPU, GPU y NPU. Actualmente, este repositorio solo admite chino mezclado con inglés. Soporte para el modelo inglés se vendrá a continuación.
El diseño de la tubería es en gran medida consistente con la versión Orignal Pytorch, que comprende tres modelos (Bert, TTS y DeepFilternet), con DeepFilternet agregado como un componente adicional.

bert-base-multilingual-uncased chino y bert-base-uncased para inglésLa siguiente tabla describe los dispositivos compatibles para cada modelo:
| Nombre del modelo | Soporte de CPU | Soporte de GPU | Soporte de NPU |
|---|---|---|---|
| Bert (preprocesamiento) | ✅ | ✅ | ✅ |
| TTS (inferencia) | ✅ | ✅ | |
| DeepFilternet (postprocesamiento) | ✅ | ✅ | ✅ |
Para descargar el paquete OpenVino C ++ para Windows, consulte el siguiente enlace: Instale OpenVino para Windows. Para OpenVino 2024.5 en Windows, puede ejecutar la línea de comando en el símbolo del sistema (CMD).
curl -O https://storage.openvinotoolkit.org/repositories/openvino/packages/2024.5/windows/w_openvino_toolkit_windows_2024.5.0.17288.7975fa5da0c_x86_64.zip --ssl-no-revoke
tar -xvf w_openvino_toolkit_windows_2024.5.0.17288.7975fa5da0c_x86_64.zip
Para Linux, puede descargar el paquete C ++ desde este enlace: Instale OpenVino para Linux. Para OpenVino 2024.5 en Linux, simplemente descárguelo de https://storage.openvinotoolkit.org/repositories/openvino/packages/2024.5/linux y descifra el paquete.
Para ver versiones adicionales y más información sobre OpenVino, visite la página oficial de OpenVino Toolkit: OpenVino Toolkit Descripción general.
git lfs install
git clone https://github.com/apinge/MeloTTS.cpp.git
<OpenVINO_DIR>setupvars.bat
cd MeloTTS.cpp
cmake -S . -B build && cmake --build build --config Release
.buildReleasemeloTTS_ov.exe --model_dir ov_models --input_file inputs.txt --output_file audio.wav
source <OpenVINO_DIR>/setupvars.sh
cd MeloTTS.cpp
cmake -S . -B build && cmake --build build --config Release
./build/meloTTS_ov --model_dir ov_models --input_file inputs.txt --output_file audio.wav
La funcionalidad de DeepFilternet se admite actualmente solo en Windows y se usa para filtrar el ruido de los modelos cuantificados INT8. Por defecto, está habilitado, pero puede habilitarlo o deshabilitarlo durante la etapa CMake utilizando la opción -DUSE_DEEPFILTERNET .
Por ejemplo, para deshabilitar la función, puede usar la siguiente línea durante el proceso de generación CMake:
cmake -S . -B build -DUSE_DEEPFILTERNET=OFF
Para obtener más información, consulte DeepFilternet.cpp.
Puede usar run_tts.bat o run_tts.sh como scripts de muestra para ejecutar los modelos. A continuación se presentan los significados de todos los argumentos que puede usar con estos scripts:
--model_dir : Especifica la carpeta que contiene los archivos del modelo, los archivos de diccionario y los archivos de recursos de terceros, que se encuentra ov_models dentro del repositorio. Es posible que deba ajustar la ruta relativa en función de su directorio de trabajo actual.--tts_device : Especifica el dispositivo OpenVino que se utilizará para el modelo TTS. Los dispositivos compatibles incluyen CPU y GPU (predeterminado: CPU).--bert_device : Especifica el dispositivo OpenVino que se utilizará para el modelo BERT. Los dispositivos compatibles incluyen CPU, GPU y NPU (predeterminado: CPU).--nf_device : Especifica el dispositivo OpenVino que se utilizará para el modelo DeepFilternet. Los dispositivos compatibles incluyen CPU, GPU y NPU (predeterminado: CPU).--input_file : especifica el archivo de texto de entrada que se procesará. Asegúrese de que el texto esté en formato UTF-8 .--output_file : especifica el archivo de audio de salida *.WAV que se generará.--speed : especifica la velocidad del audio de salida. El valor predeterminado es 1.0.--quantize : indica si usar un modelo cuantificado int8. El valor predeterminado es falso, lo que significa que un modelo FP16 se usa de forma predeterminada.--disable_bert : indica si debe deshabilitar la inferencia del modelo Bert. El valor predeterminado es falso.--disable_nf : indica si debe deshabilitar la inferencia del modelo DeepFilternet (predeterminado: falso).--language : Especifica el idioma para TTS. El idioma predeterminado es el chino ( ZH ). Los modelos Bert y DeepFilternet en la tubería admiten NPU como el dispositivo de inferencia, utilizando las NPU integradas en Meteor Lake y Lunar Lake.
A continuación se presentan los métodos para habilitar esta función y los detalles de uso:
-DUSE_BERT_NPU=ON durante la generación CMake. Por ejemplo: cmake -DUSE_BERT_NPU=ON -B build -S .--bert_device NPU para el modelo BERT y --nf_device NPU para el modelo DeepFilternet respectivamente. Por ejemplo: buildReleasemeloTTS_ov.exe --bert_device NPU --nf_device NPU --model_dir ov_models --input_file inputs.txt --output_file audio.wav Si está utilizando un cuaderno de PC AI con Windows, los controladores GPU y NPU suelen estar preinstalados. Sin embargo, los usuarios de Linux o los usuarios de Windows que prefieren actualizar a los últimos controladores deben seguir las pautas a continuación:
Para GPU : si se usa GPU, consulte Configuraciones para los gráficos del procesador Intel® (GPU) con OpenVino ™ para instalar el controlador GPU.
Para NPU : si usa NPU, consulte el dispositivo NPU para asegurarse de que el controlador NPU esté instalado correctamente.
Tenga en cuenta que todos los controladores difieren entre Windows y Linux, así que asegúrese de seguir las instrucciones para su sistema operativo específico.
Aquí hay algunas características y mejoras planificadas para futuros lanzamientos:
Agregar soporte de TTS en inglés :
Mejora de calidad en modelos TTS cuantificados :
La versión de Python de este repositorio (Melotts integrado con OpenVino) se proporciona en Melotts-OV. La versión de Python incluye métodos para convertir el modelo en OpenVino IR.
Este repositorio incluye código de terceros y bibliotecas para la segmentación de palabras chinas y el procesamiento de pinyin.