语音识别

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

 

转载于:https://www.cnblogs.com/hichens/p/11229641.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值