AI人工智能 可視化音頻信號 - 從文件讀取并進(jìn)行處理

2020-09-24 11:00 更新

這是構(gòu)建語音識別系統(tǒng)的第一步,因?yàn)樗梢詭椭斫庖纛l信號的結(jié)構(gòu)。 處理音頻信號可遵循的一些常見步驟如下所示 -

記錄 當(dāng)必須從文件中讀取音頻信號時(shí),首先使用麥克風(fēng)錄制。

采樣 用麥克風(fēng)錄音時(shí),信號以數(shù)字形式存儲。 但為了解決這個問題,機(jī)器需要使用離散數(shù)字形式。 因此,我們應(yīng)該以某個頻率進(jìn)行采樣,并將信號轉(zhuǎn)換為離散數(shù)字形式。 選擇高頻采樣意味著當(dāng)人類聽到信號時(shí),他們會感覺它是一個連續(xù)的音頻信號。

示例

以下示例顯示了使用 Python 存儲在文件中的逐步分析音頻信號的方法。 這個音頻信號的頻率是 44,100HZ。

下面導(dǎo)入必要的軟件包 -

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

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

frequency_sampling, audio_signal = wavfile.read("/Users/admin/audio_file.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)

在這一步中,從這個信號中提取出前 100 個值進(jìn)行可視化。 為此目的使用以下命令 -

audio_signal = audio_signal [:100]
time_axis = 1000 * np.arange(0, len(signal), 1) / float(frequency_sampling)

現(xiàn)在,使用下面給出的命令可視化信號 -

plt.plot(time_axis, signal, color='blue')
plt.xlabel('Time (milliseconds)')
plt.ylabel('Amplitude')
plt.title('Input audio signal')
plt.show()

下面輸出圖形是上述音頻信號提取的數(shù)據(jù),如圖所示 -

img

Signal shape: (132300,)
Signal Datatype: int16
Signal duration: 3.0 seconds
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號