Tensorflowasr
El modelo de reconocimiento de voz de extremo a extremo basado en la versión conformadora de Tensorflow 2, y la RTF de la CPU (tasa de tiempo real) es de alrededor de 0.1
La rama actual es la versión V2, que es una estructura de traducir CTC+
Bienvenidos a los errores de uso y retroalimentación
Consulte la versión V1 de la versión anterior
Resultados del entrenamiento Aishell-1:
Resultados fuera de línea
| Nombre | Cantidad de parámetros | Cer chino | Número de rondas de entrenamiento | en línea/fuera de línea | Datos de prueba | Método de decodificación |
|---|---|---|---|---|---|---|
| Wenet (conformador) | 9.5m | 6.48% | 100 | Fuera de línea sin conexión | prueba Aishell1 | ctc_geeedy |
| Wenet (transformador) | 9.7m | 8.68% | 100 | Fuera de línea sin conexión | prueba Aishell1 | ctc_geeedy |
| Wenet (paraformador) | 9.0m | 6.99% | 100 | Fuera de línea sin conexión | prueba Aishell1 | paraformer_geeedy |
| Funasr (paraformador) | 9.5m | 6.37% | 100 | Sin conexión fuera de línea | prueba Aishell1 | paraformer_geeedy |
| Funasr (conformador) | 9.5m | 6.64% | 100 | Fuera de línea sin conexión | prueba Aishell1 | ctc_geeedy |
| FunAsr (E_BRANCFORMER) | 10.1m | 6.65% | 100 | Fuera de línea sin conexión | prueba Aishell1 | ctc_geeedy |
| Repo (conformerctc) | 10.1m | 6.8% | 100 | Fuera de línea sin conexión | prueba Aishell1 | ctc_geeedy |
Resultados de transmisión
| Nombre | Cantidad de parámetros | Cer chino | Número de rondas de entrenamiento | en línea/fuera de línea | Datos de prueba | Método de decodificación |
|---|---|---|---|---|---|---|
| Wenet (conformador U2 ++) | 10.6m | 8.18% | 100 | En línea | prueba Aishell1 | ctc_geeedy |
| Wenet (transformador U2 ++) | 10.3m | 9.88% | 100 | En línea | prueba Aishell1 | ctc_geeedy |
| Repo (StreamingConformerCTC) | 10.1m | 7.2% | 100 | En línea | prueba Aishell1 | ctc_geeedy |
| Repo (ChunkConformer) | 10.7m | 8.9% | 100 | En línea | prueba Aishell1 | ctc_geeedy |
TTS: https://github.com/z-yq/tensorflowtts
NLU: -
BOT: -
Sin datos, puede lograr un cierto nivel de efecto ASR.
TTS para ASR: los datos de capacitación son Aishell1 y Aishell3, y el tipo de datos es más adecuado para ASR.
Consejos:
Hay 500 sonidos en total
Solo apoyado en chino
Si el texto que se sintetizará tiene signos de puntuación, retírelos manualmente
Si desea agregar pausas, agregue Sil en el medio del texto
Paso 1: Prepare una lista de texto para ser sintetizado, si se llama Text.List, EGS:
这是第一句话
这是第二句话
这是一句sil有停顿的话
...
Paso 2: Descargue el modelo
Enlace: https://pan.baidu.com/s/1den1pmj4olkrkw8ceqruna Código de extracción: C0TP
Ambos deben descargarse y poner en el directorio./augmentations/tts_for_asr/models
Paso 3: luego ejecute el script en el directorio raíz:
python . / augmentations / tts_for_asr / tts_augment . py - f text . list - o save_dir - - voice_num 10 - - vc_num 3en:
-f es la lista preparada por el paso 1
-O La ruta del corpus utilizado para guardar el sintético, la ruta absoluta recomendada.
--voice_num cuántos tonos se usan para sintetizar cada oración
--vc_num cuántas veces se pueden mejorar con la conversión de tono por oración
Después de completar la ejecución, el Directorio WAVS y STUTANCE.TXT se generará bajo -O
Refiriéndose a la biblioteca de Librosa, la capa de extracción de características del espectro del habla se implementa utilizando TF2.
O puede usar hoja con una menor cantidad de parámetro.
usar:
mel_layer_type: Melspectrogram #Spectrogram/leaf
trainable_kernel: True #support train model,not recommend
El proyecto CPP basado en ONNX se ha actualizado.
Consulte CPPinference ONNX para más detalles
Esquema de inferencia de Python basado en ONNX, ver Inferencia de Python para obtener detalles
Ahora admite la estructura del conformador de transmisión.
Actualmente hay dos formas de implementar:
Bloque de conformador + CTC global
Conformador de fragmentos + CTC Picker
Todos los resultados se probaron en el conjunto de datos AISHELL TEST .
RTF (tasa en tiempo real) se prueba en tareas de decodificación de un solo núcleo de CPU .
SOY:
| Nombre del modelo | Mel capa (usar/tren) | enlace | código | Datos de tren | Phoneme Cer (%) | Tamaño de parámetros | RTF |
|---|---|---|---|---|---|---|---|
| Conformadorctc (s) | Verdadero/falso | pan.baidu.com/s/1k6miy1ynglrt0cb-xsqqag | 8S53 | Aishell-1 (50 épocas) | 6.4 | 10m | 0.056 |
| StreamingConformerCTC | Verdadero/falso | pan.baidu.com/s/1rc0x7loiexaac0gnhurkhw | ZWH9 | Aishell-1 (50 épocas) | 7.2 | 15m | 0.08 |
| Cazador | Verdadero/falso | pan.baidu.com/s/1o_x677wuywnld-8snbydxg | ujmg | Aishell-1 (50 épocas) | 11.4 | 15m | 0.1 |
Vad:
| Nombre del modelo | enlace | código | Datos de tren | Tamaño de parámetros | RTF |
|---|---|---|---|---|---|
| 8k_online_vad | pan.baidu.com/s/1ag9vwtxiqw4c2agf-6nigg | OFC9 | OpenSlr Datos de código abierto | 80k | 0.0001 |
PUNC:
| Nombre del modelo | enlace | código | Datos de tren | accidentista | Tamaño de parámetros | RTF |
|---|---|---|---|---|---|---|
| Puncmodelo | pan.baidu.com/s/1gtvrkyie2cabfiqbn9bhaw | 515t | Datos de código abierto de NLP | 95% | 600k | 0.0001 |
usar:
Convertir el modelo en el archivo ONNX en test_asr.py y póngalo en pythoninference
Bienvenido a unirse, discutir y compartir problemas. Si tiene más de 200 personas en el grupo, agregue la nota "tensorflowasr".

Últimas actualizaciones
pip install tensorflow-gpu 可以参考https://www.bilibili.com/read/cv14876435if you need use the default phonemeFor LAS structure,pip install tensorflow-addonspip install rir-generatorpip install onnxruntime or pip install onnxruntime-gpu Prepare Train_List y Test_List.
formato asr_train_list , donde ' t' es toque, se recomienda escribir en un archivo de texto usando el programa, la ruta + ' t' + text
wav_path = "xxx/xx/xx/xxx.wav"
wav_label = "这是个例子"
with open ( 'train.list' , 'w' , encoding = 'utf-8' ) as f :
f . write ( wav_path + ' t ' + wav_label + ' n ' ) :Por ejemplo, la lista de trenes obtuvo:
/opt/data/test.wav 这个是一个例子
......
El siguiente es el formato de preparación de datos de capacitación (no requerido) para VAD y recuperación de puntuación:
VAD_TRAIN_LIST FORMAT:
wav_path1
wav_path2
……
Por ejemplo:
/opt/data/test.wav
La lógica de procesamiento interna de la capacitación VAD se basa en la energía como muestras de entrenamiento, así que asegúrese de que el corpus de capacitación que prepare se registre en condiciones tranquilas.
Punc_train_list Format:
text1
text2
……
En el mismo formato que LM, el texto en cada línea contiene puntuación.
Por ejemplo:
这是:一个例子哦。 √(正确格式)
这是:“一个例子哦”。 ×(错误格式)
这是:一个例子哦“。 ×(错误格式)
Descargue el modelo previamente capacitado de Bert para la capacitación asistida de modelos de recuperación de puntuación.
https://pan.baidu.com/s/1_HDAhfGZfNhXS-cYoLQucA extraction code: 4hsa
Modifique el archivo de configuración am_data.yml (./asr/configs) para establecer algunas opciones de entrenamiento, y modifique name en el modelo YAML (como: ./asr/configs/conformer.yml) para seleccionar la estructura del modelo.
Luego ejecute el comando:
python train_asr.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.yml Cuando desea probar, puede consultar la demostración stt en ./test_asr.py .
python . / test_asr . py También puede usar el probador para probar datos en grandes cantidades para verificar el rendimiento de su modelo:
implementar:
python eval_am.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.ymlEste script mostrará varios indicadores de Ser/Cer/del/Ins/Sub
6. Para entrenar el modelo de recuperación de VAD o puntuación, consulte los pasos anteriores.
Si desea usar su propio fonema, necesita el método de conversión correspondiente en am_dataloader.py .
def init_text_to_vocab ( self ): #keep the name
def text_to_vocab_func ( txt ):
return your_convert_function
self . text_to_vocab = text_to_vocab_func #here self.text_to_vocab is a function,not a call No olvides comenzar con <S> y </S> , por ejemplo:
<S>
</S>
de
shì
……
Consulte los siguientes proyectos excelentes:
https://github.com/usimarit/tiramisuasr
https://github.com/noahchalifour/warp-transducer
https://github.com/paddlepaddle/deepspeech
https://github.com/baidu-research/warp-ctc
Le permitimos y agradecemos por usar este proyecto para la investigación académica, la producción de productos comerciales, etc., pero está prohibido intercambiar este proyecto como una mercancía.
En general, casi los modelos aquí tienen licencia bajo el Apache 2.0 para todos los países del mundo.
Permitir y gracias por usar este proyecto para la investigación académica, la producción de productos comerciales, permitiendo un uso comercial y no comercial sin restricciones por igual.
Sin embargo, está prohibido intercambiar este proyecto como una mercancía.