表征音频信号涉及将时域信号转换为频域,并通过以下方式理解其频率分量。 这是一个重要的步骤,因为它提供了关于信号的大量信息。 可以使用像傅立叶变换这样的数学工具来执行此转换。
创新互联企业建站,十多年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于网站设计、网站建设中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。
示例
以下示例将逐步说明如何使用存储在文件中的 Python 来表征信号。 请注意,这里使用傅里叶变换数学工具将其转换为频域。
导入必要的软件包,如下所示 -
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
现在,读取存储的音频文件。 它会返回两个值:采样频率和音频信号。 提供存储音频文件的路径,如命令所示 -
frequency_sampling, audio_signal = wavfile.read("/Users/admin/sample.wav")
在这一步中,将使用下面给出的命令显示音频信号的采样频率,信号的数据类型和持续时间等参数 -
print('\nSignal shape:', audio_signal.shape)
print('Signal Datatype:', audio_signal.dtype)
print('Signal duration:', 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_signal + 1) / 2.0).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
现在,以分贝(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('Signal power (dB)')
plt.show()
可以观察上面代码的输出图形,如下图所示 -
当前标题:创新互联AI教程:AI人工智能表征音频信号:转换到频域
URL标题:http://www.csdahua.cn/qtweb/news16/510616.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网