码迷,mamicode.com
首页 > 其他好文 > 详细

语音识别

时间:2019-07-23 10:07:17      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:标准化   inpu   转化   可视化   文件读取   har   sign   axis   nbsp   

可视化音频信号 - 从文件读取并进行处理
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()

 

语音识别

标签:标准化   inpu   转化   可视化   文件读取   har   sign   axis   nbsp   

原文地址:https://www.cnblogs.com/hichens/p/11229641.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!