Summertts se usa para conmemorar los veranos que vienen y pasando de 2023
ilustrar
- Summertts es un programa de síntesis de habla compilado independientemente (TTS). Se puede ejecutar localmente sin la necesidad de red, y no hay dependencia adicional. La compilación de un solo clic se puede utilizar para la síntesis del habla china e inglesa.
- La biblioteca informática subyacente de Summertts usa Eigen, que es un conjunto de funciones definidas por plantillas. En la mayoría de los casos, solo necesita incluir archivos de encabezado, por lo que este proyecto no tiene otras dependencias y puede compilarse y ejecutarse de forma independiente en el entorno C ++.
- Este proyecto utiliza la biblioteca Matrix proporcionada por Eigen para implementar el operador de redes neuronales, y no necesita confiar en otros entornos operativos NN como Pytorch, TensorFlow, NCNN, etc.
- Este proyecto se compila y se ejecuta en Ubuntu. Otras plataformas similares a Linux como Android, Raspberry Pi, etc. no deben tener ningún problema importante. No han sido probados en Windows y pueden requerir un pequeño cambio.
- El modelo de este proyecto se basa en los Vits de algoritmo de síntesis del habla, y se basa en la ingeniería de C ++ se lleva a cabo en él
- Este proyecto es aplicable a la licencia MIT. El desarrollo, el usuario u organización basado en este proyecto, siga la licencia del MIT: https://mit-license.org
Registro de actualizaciones
- 2024-12-14: Agregue información de licencia a la licencia del MIT: https://mit-license.org
- 2023-06-16: Actualizado para agregar un modelo de síntesis de voz en inglés más rápido: single_speaker_english_fast.bin, o en el siguiente disco de red, la velocidad es más rápida y la calidad del sonido sintetizada no se reduce significativamente:
Enlace: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2d5h Código de extracción: 2d5h - 2023-06-15: Apoya la síntesis de pronunciación de inglés puro, y debe sincronizar el último código. Use el archivo de modelo en el siguiente disco de red: singido_speaker_english.bin, y sintetice la pronunciación en inglés de la siguiente manera:
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
La ruta del disco de red es la siguiente. La síntesis y el uso de pronunciación china anterior no se ven afectados. Cabe señalar que esta actualización solo admite la síntesis de pronunciación de inglés puro, y el inglés mixto chino no lo admite por el momento.
Enlace: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2d5h Código de extracción: 2d5h - 2023-06-09: Se ha agregado un modelo de un solo plato de tamaño mediano: single_speaker_mid.bin, que es ligeramente más lento que el modelo anterior, pero la calidad de sonido sintetizada parece ser mejor (no soy sensible a mis oídos, y me siento mejor, tal vez es un efecto psicológico: P). El código no necesita ser actualizado, solo necesito descargar senceo_speaker_mid.bin en el disco de red anterior y usarlo.
- 2023-06-08: Modificar Test/Main.cpp para admitir la síntesis de líneas nuevas y texto completo
- 2023-06-03: Fix tiene un error en la versión de ayer. Gracias a los entusiastas internautas Telen por proporcionar pruebas y pistas. Solo se requieren actualizaciones de código, y el modelo no necesita actualizarse.
- 2023-06-02: La precisión de la síntesis de pronunciación polifónica se ha mejorado considerablemente. Se necesita un nuevo modelo en Baidu NetDisk para usar la pronunciación polifónica mejorada y la regularización del texto (normalización del texto). El código actualizado hoy no puede usar el modelo anterior, de lo contrario puede conducir a un bloqueo
- 2023-05-30: El procesamiento integrado de Wetext como el módulo de regularización de texto front-end, mejorando enormemente la síntesis de pronunciación correcta de números, monedas, temperaturas, fechas, etc. Debe obtener un nuevo modelo en Baidu Netdisk a continuación
- 2023-5-23: El uso de nuevos algoritmos ha mejorado enormemente la velocidad de síntesis de voz de los altavoces individuales.
- 2023-4-21: Creación inicial
Instrucciones de uso
Clonación del código de este proyecto a nivel local, preferiblemente un entorno Ubuntu Linux
Descargue el modelo de la siguiente dirección de disco de red de Baidu y póngalo en el directorio de modelos de este proyecto: enlace: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2d5h Código de extracción: 2D5H
Después de colocar el archivo modelo, la estructura del directorio del modelo es la siguiente:
modelos/
├─se multi_speakers.bin
├── single_speaker_mid.bin
├── single_speaker_english.bin
├── single_speaker_english_fast.bin
└── single_speaker_fast.bin
Ingrese el directorio de compilación y ejecute el siguiente comando:
cmake ..
Hacer
Después de completar la compilación, el ejecutor TTS_TEST se generará en el directorio de compilación.
Ejecute el siguiente comando para probar la síntesis del habla china (TTS):
./tts_test ../test.txt ../models/single_speaker_fast.bin out.wav
Ejecute el siguiente comando para probar la síntesis del habla en inglés (TTS):
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
En esta línea de comando:
El primer parámetro es la ruta al archivo de texto, que contiene el texto que debe ser sintetizado para el habla.
El segundo parámetro es la ruta al modelo mencionado anteriormente. Single and Multi al comienzo del nombre del archivo indica si el modelo contiene un solo altavoz o altavoces múltiples. Modelo de altavoces único recomendado: single_speaker_fast.bin, la velocidad de síntesis es más rápida y la calidad de sonido de la síntesis también está bien. El tercer parámetro es el archivo de audio sintetizado. Después de ejecutar el programa, se puede abrir con un jugador.
El programa de prueba anterior se implementa en Test/Main.cpp, y la interfaz sintetizada específica se define en incluir/synthesizertrn.h, como sigue:
int16_t * infer (const string & line, int32_t sid, float longScale, int32_t & dataLen)
La interfaz:
El primer parámetro es la cadena del discurso a ser sintetizado.
El segundo parámetro especifica que la identificación del orador se usa para sintetizar el habla. Este parámetro es válido para el modelo de múltiples altavoces y se fija a 0 para el modelo de un solo plato. El número de altavoces se puede devolver mediante la interfaz int32_t getSpeakernum (), y la identificación válida es 0 y el número de altavoces devueltos a la interfaz se reduce en 1.
La tercera escala de longitud del parámetro representa la velocidad del habla del habla sintética, y cuanto mayor sea su valor indica que la velocidad del habla es más lenta.
El texto a sintetizar puede contener números y puntuaciones árabes, pero debido a que el módulo de regularización del texto (TN) de este proyecto aún es muy difícil, se ignorará para los caracteres ingleses. También debido a que el módulo de regularización del texto (TN) sigue siendo muy rugosa, la pronunciación de los caracteres polifónicos en diferentes contextos a veces es inexacta.
Desarrollo de seguimiento
- Los scripts de entrenamiento y conversión de modelos se abrirán más tarde.
- En el futuro, intentaremos entrenar y proporcionar a los modelos una mejor calidad de sonido.
Contactar al autor
- Si tiene más preguntas o lo necesita, puede enviar un correo electrónico a [email protected] o agregar WeChat: Hwang_2011. Haré todo lo posible para responder.
Licencia
- Este proyecto es aplicable a la licencia MIT. El desarrollo, el usuario u organización basado en este proyecto, siga la licencia del MIT: https://mit-license.org
agradecido
Este proyecto utiliza el siguiente esquema en términos de código fuente y algoritmos. Gracias aquí. Si pueden surgir problemas legales, contácteme a tiempo para coordinarlos y resolverlos.
- Rango
- Vits (https://github.com/jaywalnut310/vits)
- vits_chinesese (https://github.com/uehqzxi/vits_chinesese)
- MB-ESTFT-VITS (https://github.com/masayakawamura/mb-istft-vits)
- WetextProcessing (https://github.com/wenet-e2e/wetextprocessing)
- Glog (https://github.com/google/glog)
- gflags (https://github.com/gflags/gflags)
- Openfst (https://github.com/kkm000/openfst)
- Caracteres chinos a Pinyin (https://github.com/yangyangwithgnu/hanz2piny)
- cppjieba (https://github.com/yanyiwu/cppjieba)
- g2p_en (https://github.com/kyubyong/g2p)
- English-to-ipa (https://github.com/mphilli/english-to-ipa)
- El modelo de altavoz único chino de este proyecto se basa en la capacitación de conjunto de datos Biaobei de código abierto, el modelo de múltiples altavoces se basa en el conjunto de datos de código abierto AISHELL3, y el modelo de altavoz único inglés se basa en el conjunto de datos LJ Speech.