99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

AI人工智能 表征音頻信號:轉(zhuǎn)換到頻域

2020-09-24 10:11 更新

表征音頻信號涉及將時(shí)域信號轉(zhuǎn)換為頻域,并通過以下方式理解其頻率分量。 這是一個(gè)重要的步驟,因?yàn)樗峁┝岁P(guān)于信號的大量信息。 可以使用像傅立葉變換這樣的數(shù)學(xué)工具來執(zhí)行此轉(zhuǎn)換。

示例

以下示例將逐步說明如何使用存儲(chǔ)在文件中的 Python 來表征信號。 請注意,這里使用傅里葉變換數(shù)學(xué)工具將其轉(zhuǎn)換為頻域。

導(dǎo)入必要的軟件包,如下所示 -

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile

現(xiàn)在,讀取存儲(chǔ)的音頻文件。 它會(huì)返回兩個(gè)值:采樣頻率和音頻信號。 提供存儲(chǔ)音頻文件的路徑,如命令所示 -

frequency_sampling, audio_signal = wavfile.read("/Users/admin/sample.wav")

在這一步中,將使用下面給出的命令顯示音頻信號的采樣頻率,信號的數(shù)據(jù)類型和持續(xù)時(shí)間等參數(shù) -

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')

在這一步中,我們需要對信號進(jìn)行標(biāo)準(zhǔn)化,如下面的命令所示 -

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)

現(xiàn)在,需要應(yīng)用數(shù)學(xué)工具來轉(zhuǎn)換到頻域。 這里使用傅里葉變換。

signal_frequency = np.fft.fft(audio_signal)

現(xiàn)在,進(jìn)行頻域信號的歸一化并將其平方 -

signal_frequency = abs(signal_frequency[0:half_length]) / length_signal
signal_frequency **= 2

接下來,提取頻率變換信號的長度和一半長度 -

len_fts = len(signal_frequency)

請注意,傅里葉變換信號必須針對奇偶情況進(jìn)行調(diào)整。

if length_signal % 2:
   signal_frequency[1:len_fts] *= 2
else:
   signal_frequency[1:len_fts-1] *= 2

現(xiàn)在,以分貝(dB)為單位提取功率 -

signal_power = 10 * np.log10(signal_frequency)

調(diào)整X軸的以kHz為單位的頻率 -

x_axis = np.arange(0, len_half, 1) * (frequency_sampling / length_signal) / 1000.0

現(xiàn)在,將信號的特征可視化如下 -

plt.figure()
plt.plot(x_axis, signal_power, color='black')
plt.xlabel('Frequency (kHz)')
plt.ylabel('Signal power (dB)')
plt.show()

可以觀察上面代碼的輸出圖形,如下圖所示 -

img

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號