Uso simple de 6 software de código abierto que admite el reconocimiento de voz en chino

prefacio

Extraído de la Enciclopedia Baidu

La tecnología de reconocimiento de voz, también conocida como reconocimiento automático de voz (ASR), tiene como objetivo convertir el contenido léxico del habla humana en información legible por computadora, como pulsaciones de teclas, códigos binarios o secuencias de caracteres. Esto difiere del reconocimiento del hablante y la verificación del hablante, que intentan identificar al hablante del discurso en lugar del contenido léxico contenido en él.

El reconocimiento de voz es uno de los campos del aprendizaje profundo. También hay muchos proyectos en github que implementan ASR. Algunos proyectos que admiten ASR chino son los siguientes. A continuación se demostrará el uso simple

  1. https://github.com/PaddlePaddle/PaddleSpeech
  2. https://github.com/nl8590687/ASRT_SpeechRecognition
  3. https://github.com/nobody132/masr
  4. https://github.com/espnet/espnet
  5. https://github.com/wenet-e2e/wenet
  6. https://github.com/mozilla/DeepSpeech

1. Paleta Habla

PaddleSpeech es una biblioteca de modelos de código abierto basada en la dirección del habla de PaddlePaddle , que se utiliza para el desarrollo de varias tareas clave en voz y audio, y contiene una gran cantidad de modelos innovadores e influyentes basados ​​en el aprendizaje profundo.

PaddleSpeech ganó el premio a la mejor demostración de NAACL2022 , visite el artículo de Arxiv .

1.1 Instalación

Simplemente instálelo de acuerdo con el documento oficial: https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/README_cn.md#%E5%AE%89%E8%A3%85

El funcionario recomienda encarecidamente que los usuarios instalen PaddleSpeech en versiones de python superiores a la 3.7 en un entorno Linux .

Pero mi computadora es Windows y la versión de Python es 3.6.5. Elija instalar la versión python 3.7.0 en Windows: https://www.python.org/downloads/windows/ , se informa el siguiente error durante el proceso de instalación

pip install paddlespeech

Problema 1: La versión de paddlespeech-ctcdecoders es incorrecta

 Could not find a version that satisfies the requirement paddlespeech-ctcdecoders (from paddlespeech) (from versions: )
No matching distribution found for paddlespeech-ctcdecoders (from paddlespeech)

Descubrí que paddlespeech-ctcdecoders no tiene una versión de Windows, y descubrí que alguien ya compiló la versión de Windows Compilé la versión de Windows de paddlespeech-ctcdecoders por primera vez , pero el recordatorio oficial: no importa si paddlespeech -ctcdecoders no se instaló correctamente, este paquete no es necesario.

Problema 2: error de codificación gbk

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 5365: illegal multibyte sequence

Este problema desaparece cuando lo ejecuto de nuevo

1.2 ejecutar

Error de archivo no encontrado:

FileNotFoundError: [WinError 2] 系统找不到指定的文件。

Abra el archivo Python\Python37\lib\subprocess.py y cambie shell=False a shell=True en la línea 684

    _child_created = False  # Set here since __del__ checks it

    def __init__(self, args, bufsize=-1, executable=None,
                 stdin=None, stdout=None, stderr=None,
                 preexec_fn=None, close_fds=True,
                 shell=True, cwd=None, env=None, universal_newlines=None,
                 startupinfo=None, creationflags=0,
                 restore_signals=True, start_new_session=False,
                 pass_fds=(), *, encoding=None, errors=None, text=None):

Utilice la prueba de ejemplo oficial:

paddlespeech asr --lang zh --input C:\Users\supre\Desktop\sound\PaddleSpeech-develop\zh.wav

paddle_zh_demo_baidu

Probé con dos ejemplos de mis propias grabaciones y encontré que era muy preciso.

paddle_zh_demo_1

paddle_zh_demo_2

1.3 Más funciones

Además del reconocimiento de voz, también admite más funciones.

  1. clasificación de sonido
paddlespeech cls --input input.wav
  1. reconocimiento de huellas de voz
paddlespeech vector --task spk --input input_16k.wav
  1. Traducción de voz (inglés-chino) (el sistema Windows aún no es compatible)
paddlespeech st --input input_16k.wav
  1. síntesis de voz
paddlespeech tts --input "你好,欢迎使用百度飞桨深度学习框架!" --output output.wav

Encontré "Hola, aabond, bienvenido a Baidu Flying Paddle" donde aabond no tiene voz, supongo que no puede sintetizar inglés y es posible que deba proporcionar otros parámetros
inserte la descripción de la imagen aquí

  1. Restauración de puntuación
paddlespeech text --task punc --input 今天的天气真不错啊你下午有空吗我想约你一起去吃饭

2. ASRT

ASRT es un sistema de reconocimiento de voz chino basado en el aprendizaje profundo, que utiliza tensorFlow.keras basado en una red neuronal convolucional profunda y una red neuronal de memoria a corto plazo, mecanismo de atención e implementación de CTC.

2.1 instalación

Descarga el servidor e instala las dependencias

$ pip install tensorflow==2.5.2
$ pip install wave
$ pip install matplotlib
$ pip install requests
$ pip install scipy
$ pip install flask
$ pip install waitress

descargar cliente

2.2 correr

python asrserver_http.py

Usando la demostración de Baidu como ejemplo, se puede mostrar correctamente

asrt_zh_demo_1

Usando mi propia grabación como ejemplo, "El arte de hablar" se reconoce como "Arriba" y no se muestra correctamente. ¿Es porque hablo demasiado rápido? debe requerir datos de entrenamiento

asrt_zh_demo_2

El reconocimiento de voz en tiempo real también está disponible, y se encuentra que la precisión es promedio
asrt_zh_demo_3

3. MASA

MASR es un proyecto de reconocimiento de voz en chino mandarín basado en una red neuronal profunda de extremo a extremo .

MASR utiliza una red neuronal convolucional cerrada (Gated Convolutional Network), y la estructura de la red es similar a Wav2letter propuesta por Facebook en 2016. Pero la función de activación utilizada no es ReLUo es HardTanh, sino GLU(unidad lineal cerrada). De ahí el nombre Red Convolucional Cerrada. Según mis experimentos, GLUla tasa de convergencia de uso HardTanhes más rápida que . Este proyecto se puede utilizar como referencia si desea estudiar el efecto de la red convolucional para el reconocimiento de voz.

3.1 Instalación

Descargue el código fuente , descargue los datos del modelo preentrenado , cree un directorio preentrenado en el directorio del código fuente y coloque el archivo del modelo en él

3.2 correr

python examples/demo-record-recognize.py

Resultado del reconocimiento:

"El arte de hablar" identificado como "Hablar y Yishu"

masr_zh_demo_1

"Solo porque eres tan hermosa" identificado como "Solo por Lipaiyun"

masr_zh_demo_2

4. ESPnet

ESPnet: conjunto de herramientas de procesamiento de voz de extremo a extremo, que cubre el reconocimiento de voz de extremo a extremo, texto a voz, traducción de voz, mejora del habla, binarización del hablante, comprensión del lenguaje hablado, etc. ESPnet utiliza pytorch como motor de aprendizaje profundo y sigue el procesamiento de datos estilo Kaldi, la extracción/formateo de características y las recetas para proporcionar una configuración completa para varios experimentos de procesamiento de voz.

4.1 Instalación

pip install espnet
pip install espnet_model_zoo
pip install kenlm

4.2 correr

Ejecute el siguiente código, la velocidad de descarga puede ser demasiado lenta, puede descargar manualmente los datos del modelo chino y colocarlos en la ruta de instalación de Python Python36\Lib\site-packages\espnet_model_zoo\a1dd2b872b48358daa6e136d4a5ab08bpara acelerar

import soundfile
from espnet_model_zoo.downloader import ModelDownloader
from espnet2.bin.asr_inference import Speech2Text
d = ModelDownloader()
speech2text = Speech2Text(
**d.download_and_unpack("kamo-naoyuki/aishell_conformer"),
    # Decoding parameters are not included in the model file
    maxlenratio=0.0,
    minlenratio=0.0,
    beam_size=20,
    ctc_weight=0.3,
    lm_weight=0.5,
    penalty=0.0,
    nbest=1
)
audio, rate = soundfile.read("zh.wav")
nbests = speech2text(audio)
text, *_ = nbests[0]
print(text)

Se puede encontrar que la demostración de Baidu puede identificar correctamente

espnet_zh_demo_1

Pruebe su propia demostración de grabación, "The Art of Speaking" se reconoce como "Constraints of Speaking"

espnet_zh_demo_2

5. WeNet

Wenet es un conjunto de herramientas de reconocimiento de voz de código abierto para aplicaciones industriales desarrollado por el equipo de voz de Momenwen y el laboratorio de voz de la Universidad Politécnica Occidental. Esta herramienta brinda un servicio integral desde la capacitación hasta la implementación del reconocimiento de voz con una solución simple. Su principal características de la siguiente manera:

  • Utilizando la estructura de red conformer y el método de optimización conjunta CTC/pérdida de atención, tiene el efecto de reconocimiento de primera clase de la industria.
  • Brinda soluciones para implementación directa en la nube y en el extremo, minimizando el trabajo de ingeniería entre el entrenamiento del modelo y el aterrizaje del producto.
  • El marco es simple, y la parte de entrenamiento del modelo se basa completamente en la ecología de pytorch, y no depende de herramientas complejas como kaldi para instalarse.
  • Anotaciones y documentación detalladas, ideales para aprender los fundamentos y los detalles de implementación del reconocimiento de voz de extremo a extremo.

5.1 Instalación

pip install wenetruntime

5.2 correr

import sys
import wenetruntime as wenet

wav_file = sys.argv[1]
decoder = wenet.Decoder(lang='chs')
ans = decoder.decode_wav(wav_file)
print(ans)

Si la descarga del archivo es demasiado lenta, puede descargar manualmente el archivo al directorio C:\Users\supre\.wenet\chs, recuerde descomprimir chs.tar.gz en lugar de final.zip.

Use la prueba de demostración de Baidu, muy precisa

wenet_zh_demo_1

Use su propia prueba de grabación de sonido, el error es el siguiente:

wenet_error_1

Solo debería poder ingresar mono, pero lo que grabé fue binaural. Solución: use Audacity para grabar, cambie el canal a mono y cambie la frecuencia de muestreo a 16000 HZ, el codificador predeterminado permanece sin cambios, de lo contrario aparecerá el siguiente error
wenet_error_2

El resultado final sigue siendo muy preciso.

wenet_zh_demo_2

6. Habla profunda

DeepSpec es un motor de voz a texto de código abierto (Speech-To-Text, STT) que utiliza un modelo entrenado en técnicas de aprendizaje automático basado en los trabajos de investigación de voz profunda de Baidu . El proyecto Deep Speech utiliza Tensorflow de Google para facilitar la implementación.

6.1 Instalación

pip install deepspeech

6.2 Ejecutar

Descargue el modelo chino: deepspeech-0.9.3-models-zh-CN.pbmm , deepspeech-0.9.3-models-zh-CN.scorer

deepspeech --model deepspeech-0.9.3-models-zh-CN.pbmm --scorer deepspeech-0.9.3-models-zh-CN.scorer --audio zh.wav

Use la prueba de demostración de Baidu, hay un error

deepspeeh_zh_demo_1

Usando autograbaciones, "El arte de hablar" identificado como "Una taza de orquídeas"

deepspeeh_zh_demo_2

Usa los propios datos de deepspeech para probar "tiene dos hermanos mayores" e identificarlo como "habrá dos hermanos mayores"

deepspeeh_zh_demo_3

referencia

  1. import paddle encontró un error
  2. Enseñarle cómo usar ASRT para implementar el servidor API de reconocimiento de voz chino
  3. Wenet: herramienta de reconocimiento de voz E2E para aplicaciones industriales

Supongo que te gusta

Origin blog.csdn.net/qq_23091073/article/details/126627958
Recomendado
Clasificación