文章编号:2699 /
分类:
技术教程 /
更新时间:2024-05-17 14:44:46 / 浏览:
次
恭喜您成为首批注册用户
表征音频信号涉及将时域信号转换为频域,并通过以下方式理解其频率分量。这是一个重要的步骤,因为它提供了关于信号的大量信息。可以使用像傅立叶变换这样的数学工具来执行此转换。
以下示例将逐步说明如何使用存储在文件中的Python来表征信号。请注意,这里使用傅里叶变换数学工具将其转换为频域。
导入必要的软件包,如下所示-
importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.ioimportwavfile

现在,读取存储的音频文件。它会返回两个值:采样频率和音频信号。提供存储音频文件的路径,如命令所示-
frequency_sampling,audio_signal=wavfile.read("/Users/admin/sample.wav")在这一步中,将使用下面给出的命令显示音频信号的采样频率,信号的数据类型和持续时间等参数-
print('\nSignalshape:',audio_signal.shape)print('SignalDatatype:',audio_signal.dtype)print('Signalduration:',round(audio_signal.shape[0]/float(frequency_sampling),2),'seconds')在这一步中,我们需要对信号进行标准化,如下面的命令所示-
audio_signal=audio_signal/np.power(2,15)这一步涉及提取信号的长度和半长。使用以下命令-
length_signal=len(audio_signal)half_length=np.ceil((length_signal1)/2.0).astype(np.int)现在,需要应用数学工具来转换到频域。这里使用傅里叶变换。
signal_frequency=np.fft.fft(audio_signal)现在,进行频域信号的归一化并将其平方-
signal_frequency=abs(signal_frequency[0:half_length])/length_signalsignal_frequency**=2接下来,提取频率变换信号的长度和一半长度-
len_fts=len(signal_frequency)请注意,傅里叶变换信号必须针对奇偶情况进行调整。
iflength_signal%2:signal_frequency[1:len_fts]*=2else:signal_frequency[1:len_fts-1]*=2现在,以分贝(dB)为单位提取功率-
signal_power=10*np.log10(signal_frequency)调整X轴的以kHz为单位的频率-
x_axis=np.arange(0,len_half,1)*(frequency_sampling/length_signal)/1000.0现在,将信号的特征可视化如下-
plt.figure()plt.plot(x_axis,signal_power,color='black')plt.xlabel('Frequency(kHz)')plt.ylabel('Signalpower(dB)')plt.show()可以观察上面代码的输出图形,如下图所示-
违法和不良信息举报电话:173-0602-2364|
相关标签:
AI人工智能表征音频信号:转换到频域、 本文地址:https://www.badfl.com/article/e40943b7529cd3028f33.html
上一篇:AI人工智能生成单调音频信号...
下一篇:AI人工智能可视化音频信号从文件读取并进行...