语音识别

Posted hichens

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音识别相关的知识,希望对你有一定的参考价值。

可视化音频信号 - 从文件读取并进行处理
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile

frequency_sampling, audio_signal = wavfile.read("C:\\Users\\Administrator\\Desktop\\test.wav")

#标准化
audio_signal = audio_signal / np.power(2, 15)
audio_signal = audio_signal[21000:22000]
time_axis = 1000 * np.arange(0, len(audio_signal), 1) / float(frequency_sampling)

plt.plot(time_axis, audio_signal, color=blue)
plt.xlabel(Time (milliseconds))
plt.ylabel(Amplitude)
plt.title(Input audio signal)
plt.show()




表征音频信号:转换到频域
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile

#读取音频文件, 返回采样频率和音频信号
frequency_sampling, audio_signal = wavfile.read(C:\\Users\\Administrator\\Desktop\\test.wav)
audio_signal = audio_signal / np.power(2, 15)#标准化

length_signal = len(audio_signal)#信号长度
half_length = np.ceil((length_signal+1)/2).astype(np.int)#信号半长

#傅里叶转化到频域
signal_frequency = np.fft.fft(audio_signal)

#频域信号归一化并平方
signal_frequency = abs(signal_frequency[0:half_length])/length_signal
signal_frequency **= 2

len_fts = len(signal_frequency)#频率变化信号的长度

#傅里叶信号针对奇偶调整
if length_signal % 2:
    signal_frequency[1:len_fts] *= 2
else:
    signal_frequency[1:len_fts - 1] *= 2

signal_power = 10*np.log10(signal_frequency)#以分贝(dB)为单位提取功率
x_axis = np.arange(0, len_fts, 1) * (frequency_sampling/length_signal)/1000#X轴以kHz为单位

#特征可视化
plt.plot(x_axis, signal_power, color=blue)
plt.xlabel(Frequency (kHz))
plt.ylabel(Signal power (dB))
plt.title(Characterize audio signals: convert to frequency domain)
plt.show()

 

以上是关于语音识别的主要内容,如果未能解决你的问题,请参考以下文章

语音识别技术的环节是啥

什么是自动语音识别功能?

Unity语音识别(百度AI长语句语音识别&Unity原生短语语音识别)

语音识别传统语音识别带权有限转态转换器深度语音识别时序分类CTC解码

百度语音识别vs科大讯飞语音识别

树莓派怎么调用科大讯飞的语音库实现语音识别