Profundidad red neuronal - Chino reconocimiento de voz

1. Antecedentes

El habla es la interacción humana más natural. Después de la invención de la computadora para que la máquina puede "entender" el lenguaje humano, entender el significado de la lengua, y hacer que la respuesta correcta se ha convertido en un objetivo. Este proceso utiliza tres técnicas principales, es decir, el reconocimiento de voz automático (reconocimiento de voz automático,
la ASR), PNL (procesamiento del lenguaje natural,
el NLP) y la síntesis de voz (síntesis de voz, SS). El propósito de la tecnología de reconocimiento de voz es permitir que la máquina puede entender el habla humana, es una tarea típica transversal.

2. Visión general

sistema de reconocimiento de voz Modelo consta de dos partes que constan de modelos acústicos y de lenguaje, modelos acústicos correspondientes a cálculo de probabilidades de voz a fonema, el modelo de idioma correspondiente al fonema de cálculo de probabilidades carácter.

Un sistema de reconocimiento de voz continua puede ser sustancialmente consta de cuatro partes: una extracción de características, un modelo acústico, modelo de lenguaje y una sección de decodificación. Procedimiento específico es a primera extracto obtenido después de las características acústicas de los datos de voz, y los modelos a continuación, capacitados para obtener un modelo acústico estadístico, la identificación como una plantilla, y el modelo de lenguaje combinado obtenido por el proceso de decodificación de un resultado de reconocimiento.

Es una parte clave de un sistema de reconocimiento de voz modelo acústico, es el papel de la unidad de generación de secuencia de característica acústica se describirá, las señales de voz se clasifican. Podemos utilizar el modelo para calcular el período de los vectores de característica acústica que pertenecen a la probabilidad observada de cada unidad acústica y la característica de acuerdo con la secuencia de estado directrices probabilidad en la secuencia.
Este documento aborda el conjunto de datos , conjunto de datos de voz Universidad de Tsinghua THCHS30 china .
código tutorial detallado de reconocimiento de voz china

2.1 Feature Extraction

La red neuronal puede ser entrenada como entrada de audio, por lo que el primer paso que quiere características de la extracción de datos de audio. extracción de características comunes se basa en el mecanismo humano vocal y la percepción auditiva, percepción de la comprensión de la naturaleza del sonido del sonido al mecanismo auditivo .
Algunas de las características acústicas comunes son como sigue:

(1) lineales coeficientes de predicción (la LPC), el análisis de predicción lineal es un análogo de principio enunciado humano, obtenido por el modelo de canal análisis stub cascada. Supongamos que la función de transferencia del sistema con los filtros digitales de todos los polos son similares, por lo general un 16 polos 12 puede ser característica de una señal de voz se describe. Así que para la señal de voz en el tiempo n,
se puede utilizar una combinación de señales de temporización lineal antes de aproximación analógica. A continuación se calcula el valor de la muestra y el valor de muestra de la señal de voz lineal predicción, y por lo tanto entre los dos tramos del mínimo error cuadrático medio (MSE), se pueden obtener LPC.
(2) perceptual de predicción lineal (PLP), el PLP es un parámetro característico basado en el modelo auditivo. Este parámetro es una característica equivalente a la LPC, que es un conjunto de todos los polos coeficientes de predicción modelo del polinomio. Excepto que el
oído Xin sueño PLP se basa a través de cálculo aplicada a análisis espectral en la señal de voz de entrada a través del proceso modelo auditivo del oído, en lugar de la señal de dominio de tiempo LPC utiliza, la ventaja es anti-ruido de extracción de características del habla beneficioso.

(3) Mel Cepstral de Frecuencia coeficientes (MFCC), las características de audición del oído MFCC también basados, frecuencia Mel
de la división de banda cepstrum se designa en la escala Mel valor de la escala de frecuencias Mel logarítmica isométrica y la distribución de frecuencias real las relaciones más en línea con el oído humano, por lo que pueden hacer que la señal de voz tiene una mejor representación.

(5) un banco de filtros basado en la característica de Fbank (banco de filtros), Fbank método de extracción de características es más bien
para eliminar el último paso del MFCC transformada de coseno discreta, con la característica MFCC, caracterizado Fbank retiene más de los datos de voz original.

(6) espectrograma (espectrograma), espectrograma espectrograma de voz está generalmente espectrograma obtenido mediante el procesamiento de la señal de dominio de tiempo recibida, siempre que hay una longitud suficiente de tiempo puede ser una señal de dominio de tiempo. Espectrograma observó características de la fuerza de la señal del habla en diferentes bandas de frecuencia se puede ver que el cambio con el tiempo.
Este artículo es el espectrograma como una entrada de función mediante la formación de procesamiento de imágenes de la CNN. Espectrograma se puede entender como un período de superposición espectrograma tiempo, por lo que el principal espectrograma de extracción se divide en: encuadre, de ventanas, transformada rápida de Fourier (FFT).

2.1.1 lectura de audio

El primer paso, tenemos que encontrar la manera de explotar el scipy módulo de audio en información útil, fs es la frecuencia de muestreo, los datos de voz wavsignal. fs nuestro conjunto de datos son 16 kHz.

import scipy.io.wavfile as wav
filepath = 'test.wav'

fs, wavsignal = wav.read(filepath)

2.1.2 sub-marco, ventana

señales de voz no son estables macroscópicamente, microscópicamente lisa, que tiene un estacionariedad de tiempo corto (10-30ms la señal de voz se puede considerar aproximadamente constante para la pronunciación de un fonema), generalmente tarda 25 ms.
Con el fin de procesar la señal de voz, queremos señal de voz de ventana, es decir, sólo una vez la ventana de procesamiento de datos. Debido a que la señal de voz real es muy largo, no podemos y no tenemos procesamiento de datos desde hace mucho tiempo muy. Cada solución sensata es tomar una pieza de datos para el análisis, y luego quitar la pieza de datos antes de ser analizados. Nuestra definición de la ventana se refiere al principio de la operación ventana de Hamming se pone en una trama de datos se multiplica por una función   y obtener una nueva trama de datos. Las fórmulas se dan a continuación.
Cómo tomar sólo una parte de los datos que? Debido a que la ventana de datos después de que hemos Hamming una transformada rápida de Fourier (una FFT), se supone que la señal dentro de la ventana es una señal representativa de un punto (que es la ventana extremos izquierdo y derecho puede ser sustancialmente continua), por lo general una pequeña sin periodicidad significativa de datos de audio, junto con la ventana de Hamming, los datos se encuentra cerca de una función periódica.
Desde además ventana de Hamming, sólo la mitad de los datos reflejados, los datos se pierde en ambos lados, por lo que el otro va a mover la ventana cuando hay solapamiento, cuando la abertura de toma 25 ms, 10 ms pueden dar el paso (en el que una generalmente el valor 0,46).
La fórmula es:
!. [] (Https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlL19fbGF0ZXgvZDRjYmM0ZjEyY2JlZmM3YTU1MDY5ODM2NDJhYzVlZjAuc3Zn?x-oss-process=image/format,png#card=math&code=W (n-, A) = (1-A) * -a cos [\ frac {2n \ pi } {N-1}], 0 \ geq n \ leq N-1 y height = 34,59770114942529 y width = 332,2988505747127)

código:

import numpy as np

x=np.linspace(0, 400 - 1, 400, dtype = np.int64)#返回区间内的均匀数字
w = 0.54 - 0.46 * np.cos(2 * np.pi * (x) / (400 - 1))

time_window = 25
window_length = fs // 1000 * time_window

# 分帧
p_begin = 0
p_end = p_begin + window_length
frame = wavsignal[p_begin:p_end]

plt.figure(figsize=(15, 5))
ax4 = plt.subplot(121)
ax4.set_title('the original picture of one frame')
ax4.plot(frame)

# 加窗

frame = frame * w
ax5 = plt.subplot(122)
ax5.set_title('after hanmming')
ax5.plot(frame)
plt.show()

efectos de la foto:
image.png

2.1.3 Fast Fourier Transform (FFT)

Una señal de voz es más difícil de ver en las características de dominio de tiempo de los mismos, por lo general se convierte en energía en la distribución de dominio de frecuencia, por lo que hacemos una transformada rápida de Fourier en la señal después de que el procesamiento de función de ventana para cada trama en el dominio del tiempo en la figura convertida en un espectro de frecuencias de cada trama, y luego podemos obtener espectrograma de espectro superposición de cada ventana.

código:

from scipy.fftpack import fft

# 进行快速傅里叶变换
frame_fft = np.abs(fft(frame))[:200]
plt.plot(frame_fft)
plt.show()

# 取对数,求db
frame_log = np.log(frame_fft)
plt.plot(frame_log)
plt.show()

2,2  CTC (conexionista Temporal Clasi fi cación)

En cuanto a reconocimiento de voz, si hay un clip del conjunto de datos de audio y la transcripción correspondiente, pero no sabemos cómo los personajes de transcripción y la alineación de fonemas de audio, lo que aumentaría considerablemente la dificultad de entrenar al reconocedor de voz. Si los datos no están proceso de ajuste, que significa que no puede utilizar algunos métodos de entrenamiento simples. En este sentido, podemos elegir el primer método es desarrollar una regla, como "un carácter correspondiente a la entrada de diez fonema", pero la gente varía la velocidad del habla, este enfoque es propenso a fallas. Para garantizar la fiabilidad del modelo, el segundo método, es decir, alinear manualmente la posición de cada carácter en el audio, y un mejor efecto de entrenamiento rendimiento del modelo, porque sabemos que cada paso de tiempo de entrada de información verdadera. Sin embargo, sus deficiencias son obvias - incluso el tamaño adecuado del conjunto de datos, tal enfoque aún se consume mucho tiempo. De hecho, el desarrollo de la poca precisión de regulación, la depuración manual cuando el uso de demasiado tiempo, no sólo en el campo de reconocimiento de voz, otros trabajos, tales como el reconocimiento de escritura a mano, añadir etiquetas de acción en el vídeo, también se enfrentan a estos problemas.
En este escenario, es inútil CTC. CTC es una manera para que la red para alinear automáticamente una buena manera de aprender, muy adecuado para el reconocimiento de voz y reconocimiento de escritura. Con el fin de describir algunas de las más imágenes, podemos secuencia de entrada (Audio) asignada a X = [x1, x2, ... , xT], la secuencia de salida correspondiente (transcripción) es, Y = [y1, y2, ... , YU] . Después de eso, el personaje con la operación de alineación de fonemas es equivalente a establecer un mapa preciso, los detalles se pueden ver entre el X y el Y- clásico artículo CTC .
parte de la función de pérdida del código:

def ctc_lambda(args):
    labels, y_pred, input_length, label_length = args
    y_pred = y_pred[:, :, :]
    return K.ctc_batch_cost(labels, y_pred, input_length, label_length)

La decodificación de parte del código:

#num_result为模型预测结果,num2word 对应拼音列表。
def decode_ctc(num_result, num2word):
	result = num_result[:, :, :]
	in_len = np.zeros((1), dtype = np.int32)
	in_len[0] = result.shape[1];
	r = K.ctc_decode(result, in_len, greedy = True, beam_width=10, top_paths=1)
	r1 = K.get_value(r[0][0])
	r1 = r1[0]
	text = []
	for i in r1:
		text.append(num2word[i])
	return r1, text

3. modelo acústico

El uso principal del modelo de la CNN procesa la imagen y extrae la función principal de la pérdida de función de agregado definida CTC para entrenar el valor máximo de la piscina. Si hay entrada y la etiqueta, a continuación, la estructura del modelo puede ajustarse nosotros mismos, si la precisión se puede mejorar, es deseable. También puede unirse a la arquitectura de red LSTM-peer, que opera en la CNN y la puesta en común de información en Internet mucho, no repetiremos aquí. Los lectores interesados pueden referirse al periodo de la AlexNet red neuronal convolucional  .
código:

class Amodel():
    """docstring for Amodel."""
    def __init__(self, vocab_size):
        super(Amodel, self).__init__()
        self.vocab_size = vocab_size
        self._model_init()
        self._ctc_init()
        self.opt_init()

    def _model_init(self):
        self.inputs = Input(name='the_inputs', shape=(None, 200, 1))
        self.h1 = cnn_cell(32, self.inputs)
        self.h2 = cnn_cell(64, self.h1)
        self.h3 = cnn_cell(128, self.h2)
        self.h4 = cnn_cell(128, self.h3, pool=False)
        # 200 / 8 * 128 = 3200
        self.h6 = Reshape((-1, 3200))(self.h4)
        self.h7 = dense(256)(self.h6)
        self.outputs = dense(self.vocab_size, activation='softmax')(self.h7)
        self.model = Model(inputs=self.inputs, outputs=self.outputs)

    def _ctc_init(self):
        self.labels = Input(name='the_labels', shape=[None], dtype='float32')
        self.input_length = Input(name='input_length', shape=[1], dtype='int64')
        self.label_length = Input(name='label_length', shape=[1], dtype='int64')
        self.loss_out = Lambda(ctc_lambda, output_shape=(1,), name='ctc')\
            ([self.labels, self.outputs, self.input_length, self.label_length])
        self.ctc_model = Model(inputs=[self.labels, self.inputs,
            self.input_length, self.label_length], outputs=self.loss_out)

    def opt_init(self):
        opt = Adam(lr = 0.0008, beta_1 = 0.9, beta_2 = 0.999, decay = 0.01, epsilon = 10e-8)
        self.ctc_model.compile(loss={'ctc': lambda y_true, output: output}, optimizer=opt)


4. Modelo de Lenguaje

4.1 Introducción al modelo de lenguaje estadístico

modelo estadístico del lenguaje es la base del procesamiento del lenguaje natural, que es un modelo matemático tiene unas ciertas propiedades sensibles al contexto, sino también un modelo gráfico probabilístico de la naturaleza, y es ampliamente utilizado en la traducción automática, reconocimiento de voz, de entrada por voz, reconocimiento de caracteres de la imagen, corrección ortográfica, mirada para los errores tipográficos y motores de búsqueda. En muchas tareas, el equipo necesita saber si una secuencia de palabras puede constituir un pueblo de entender, sin faltas de ortografía y frases con sentido, como estas palabras:

许多人可能不太清楚到底机器学习是什么,而它事实上已经成为我们日常生活中不可或缺的重要组成部分。
不太清楚许多人可能机器学习是什么到底,而它成为已经日常我们生活中组成部分不可或缺的重要。
不清太多人机可楚器学许能习是么到什底,而已常我它成经日为们组生中成活部不重可的或缺分要。

La primera frase sintácticamente, es decir, claro, sin embargo, la segunda frase lo que significa que también está claro, tercera e incluso una vaga significa todo. Esto es, desde una perspectiva basada en reglas de entender, en el último siglo antes de la década de 1970, los científicos creen que sí. Y después, Jared Nick utiliza un modelo estadístico simple de resolver este problema. Desde un punto de vista estadístico, la probabilidad de que la primera frase del lote, tales como Shi   , mientras que el segundo siguió, tales como Shi  , el tercero más pequeño, como Shi . Según este modelo, la probabilidad de ocurrencia de la primera frase es la segunda de 20 veces la potencia de 10, por no mencionar la tercera frase, por lo que la primera frase del sentido más común.

4.2 Modelado

Supongamos que se genera la frase S, hay una serie de palabras W1, W2, ... WN configuración, la oración es la probabilidad de ocurrencia de S:
! [] (Https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlL19fbGF0ZXgvNzk3Mjg5OGFlYmM0ZTdjZjYzMDAwY2NmZmEzNGU2MjEuc3Zn?x-oss-process=image / formato png # tarjeta = matemáticas y código = P (S) = P (w1, w2, ..., wn) = P (w1) * P (W2 | W1) * P (w3 | W1, W2) ... P (wn | w1, w2, ..., wn- 1) y height = 18,50574712643678 y width = 603,448275862069)
debido a las limitaciones de espacio de memoria del ordenador y potencia de cálculo, que claramente tiene por qué ser el método de cálculo más razonable. En general, teniendo en cuenta que sólo se relaciona con la palabra anterior, se puede tener una precisión bastante buena, en el uso real, generalmente se considera las dos primeras palabras acerca lo suficiente, antes de considerar raros casos relacionados con los tres primeros, Por lo tanto, podemos elegir tomar la siguiente fórmula:
! [] (https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlL19fbGF0ZXgvNjY5MzUyNDY5ZDIwNmJlMDhkN2EyMjViYzBiNjMwZWMuc3Zn?x-oss-process=image/format,png#card=math&code=P (S) = P (W1, w2, ..., wn) = P (w1) * P (W2 | W1) * P (w3 | w2) ... P (wn | WN-1) y height = 18,50574712643678 y width = 502,0689655172414)
y P podemos obtener estadísticas de escalada palabra de frecuencia para calcular la probabilidad.

4.3 Pinyin para lograr el texto

Pinyin de los caracteres chinos a su vez es el algoritmo de programación dinámica, con el algoritmo para encontrar el camino más corto es básicamente el mismo. Podemos entrar en el idioma chino como un problema de comunicación, cada pinyin puede corresponder a múltiples personajes, y cada personaje una vez que lea un solo sonido, la ortografía de cada palabra que corresponde a la izquierda se ha reunido, se ha convertido en una grafo dirigido.Sin nombre .png foto

La prueba de modelo

modelo acústico prueba:
image.png
prueba de modelo de lenguaje:
image.png
A medida que el modelo es simple y el conjunto de datos es demasiado pequeño, el efecto no es muy buena modelo.
Proyecto Dirección de origen: https://momodel.cn/explore/5d5b589e1afd9472fe093a9e?type=app

6. Referencias

Tesis: Reconocimiento de voz Tecnología Avances y Perspectivas
blog: ASRT_SpeechRecognition
blog: DeepSpeechRecognition

sobre nosotros

Mo (URL: momodel.cn ) es un soporte de Python de la inteligencia artificial en línea plataforma de modelado que puede ayudar a desarrollar rápidamente, la formación y el modelo de implementación.


Mo clubes de AI  son patrocinados por la instalación de I + D y el equipo de diseño de producto, comprometida con el desarrollo y el uso de inteligencia artificial para reducir el umbral del club. Equipo con el procesamiento de grandes volúmenes de datos y análisis, visualización de datos y experiencia como modelo, ha llevado a cabo proyectos de inteligencia multidisciplinar, con el diseño y la capacidad de desarrollo en todos los ámbitos de la parte inferior a la parte delantera. Las principales líneas de investigación para la gestión de análisis de datos grandes y tecnología de inteligencia artificial, y con el fin de promover basadas en datos de investigación científica.

Actualmente el club llevó a cabo seis actividades temáticas salón de la tecnología de aprendizaje automático bajo la línea en Hangzhou semanal, de vez en cuando para compartir artículos e intercambios académicos. Con la esperanza de que convergen de todos los ámbitos de la vida a los amigos interesados ​​de inteligencia artificial, siguen creciendo los intercambios, promover la democratización de la inteligencia artificial, un uso más amplio.
image.png

Publicado 36 artículos originales · ganado elogios 4 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_44015907/article/details/100148218
Recomendado
Clasificación