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

2020-09-24 11:00 更新

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

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

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

示例

以下示例顯示了使用 Python 存儲(chǔ)在文件中的逐步分析音頻信號(hào)的方法。 這個(gè)音頻信號(hào)的頻率是 44,100HZ。

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

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

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

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

使用顯示的命令顯示音頻信號(hào)的采樣頻率,信號(hào)的數(shù)據(jù)類型及其持續(xù)時(shí)間等參數(shù) -

  1. print('\nSignal shape:', audio_signal.shape)
  2. print('Signal Datatype:', audio_signal.dtype)
  3. print('Signal duration:', round(audio_signal.shape[0] /
  4. float(frequency_sampling), 2), 'seconds')

這一步涉及如下所示對信號(hào)進(jìn)行標(biāo)準(zhǔn)化 -

  1. audio_signal = audio_signal / np.power(2, 15)

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

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

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

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

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

img

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)