自动秒收录

AI人工智能表征音频信号:转换到频域


文章编号:2699 / 分类:技术教程 / 更新时间:2024-05-17 14:44:46 / 浏览:

恭喜您成为首批注册用户

表征音频信号涉及将时域信号转换为频域,并通过以下方式理解其频率分量。这是一个重要的步骤,因为它提供了关于信号的大量信息。可以使用像傅立叶变换这样的数学工具来执行此转换。

以下示例将逐步说明如何使用存储在文件中的Python来表征信号。请注意,这里使用傅里叶变换数学工具将其转换为频域。

导入必要的软件包,如下所示-

importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.ioimportwavfile AI人工智能表征音频信号转换到频域

现在,读取存储的音频文件。它会返回两个值:采样频率和音频信号。提供存储音频文件的路径,如命令所示-

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人工智能可视化音频信号从文件读取并进行...

发表评论

温馨提示

做上本站友情链接,在您站上点击一次,即可自动收录并自动排在本站第一位!
<a href="https://www.badfl.com/" target="_blank">自动秒收录</a>