Transformers.js 文件

utils/audio

您正在檢視的是需要從原始碼安裝。如果您希望進行常規 npm 安裝,請檢視最新穩定版本(v3.0.0)。
Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

utils/audio

用於音訊處理的輔助模組。

這些函式和類僅供內部使用,這意味著終端使用者無需訪問此處。


utils/audio.RawAudio

型別utils/audio 的靜態類


new RawAudio(audio, sampling_rate)

建立一個新的 RawAudio 物件。

引數量型別描述
音訊Float32Array

音訊資料

取樣率數字

音訊資料的取樣率


rawAudio.toWav() ⇒ <code> ArrayBuffer </code>

將音訊轉換為 wav 檔案緩衝區。

型別RawAudio 的例項方法
返回ArrayBuffer - WAV 檔案。


rawAudio.toBlob() ⇒ <code> Blob </code>

將音訊轉換為 Blob。

型別RawAudio 的例項方法


rawAudio.save(path)

將音訊儲存為 wav 檔案。

型別RawAudio 的例項方法

引數量型別
路徑字串

utils/audio.read_audio(url, sampling_rate) ⇒ <code> Promise. < Float32Array > </code>

從路徑/URL 讀取音訊的輔助函式。

型別utils/audio 的靜態方法
返回Promise.<Float32Array> - 解碼後的音訊,型別為 Float32Array

引數量型別描述
urlstring | URL

載入音訊的路徑/URL。

取樣率數字

解碼音訊時使用的取樣率。


read_audio~audio : <code> Float32Array </code>

型別read_audio 的內部屬性


utils/audio.hanning(M) ⇒ <code> Float64Array </code>

生成長度為 M 的漢寧窗。更多資訊請參見 https://numpy.org/doc/stable/reference/generated/numpy.hanning.html

型別utils/audio 的靜態方法
返回Float64Array - 生成的漢寧窗。

引數量型別描述
M數字

要生成的漢寧窗的長度。


utils/audio.hamming(M) ⇒ <code> Float64Array </code>

生成長度為 M 的漢明窗。更多資訊請參見 https://numpy.org/doc/stable/reference/generated/numpy.hamming.html

型別utils/audio 的靜態方法
返回Float64Array - 生成的漢明窗。

引數量型別描述
M數字

要生成的漢明窗的長度。


utils/audio.mel_filter_bank(num_frequency_bins, num_mel_filters, min_frequency, max_frequency, sampling_rate, [norm], [mel_scale], [triangularize_in_mel_space]) ⇒ <code> Array.<Array<number>> </code>

建立用於獲取梅爾頻譜圖的頻率 bin 轉換矩陣。這被稱為 *梅爾濾波器組*,存在各種實現,它們在濾波器數量、濾波器形狀、濾波器間距方式、濾波器頻寬以及頻譜扭曲方式上有所不同。這些特徵的目標是近似人類對音高相對於頻率變化的非線性感知。

型別utils/audio 的靜態方法
返回Array.<Array<number>> - 三角濾波器組矩陣,這是一個形狀為 (num_frequency_bins, num_mel_filters) 的二維陣列。這是一個從頻譜圖到梅爾頻譜圖的投影矩陣。

引數量型別描述
num_frequency_bins數字

頻率 bin 的數量(應與 n_fft // 2 + 1 相同,其中 n_fft 是用於計算頻譜圖的傅立葉變換的大小)。

num_mel_filters數字

要生成的梅爾濾波器數量。

min_frequency數字

感興趣的最低頻率,單位為赫茲。

max_frequency數字

感興趣的最高頻率,單位為赫茲。這不應超過 sampling_rate / 2

取樣率數字

音訊波形的取樣率。

[norm]字串

如果為 "slaney",則將三角梅爾權重除以梅爾帶的寬度(面積歸一化)。

[mel_scale]字串

要使用的梅爾頻率刻度,"htk""slaney"

[triangularize_in_mel_space]布林值

如果啟用此選項,則在梅爾空間而不是頻率空間應用三角濾波器。為了獲得與 torchaudio 計算梅爾濾波器時相同的結果,應將其設定為 true


utils/audio.spectrogram(waveform, window, frame_length, hop_length, options) ⇒ <code> Promise.<Tensor> </code>

使用短時傅立葉變換計算一個波形的頻譜圖。

此函式可以建立以下型別的頻譜圖

  • 振幅頻譜圖(power = 1.0
  • 功率頻譜圖(power = 2.0
  • 復值頻譜圖(power = None
  • 對數頻譜圖(使用 log_mel 引數)
  • 梅爾頻譜圖(提供 mel_filters
  • 對數梅爾頻譜圖(提供 mel_filterslog_mel

在此實現中,假定視窗被零填充以使其與分析幀大小相同。可以透過 window_function() 獲取填充的視窗。FFT 輸入緩衝區可能大於分析幀,通常是下一個二次冪。

型別utils/audio 的靜態方法
返回Promise.<Tensor> - 形狀為 (num_frequency_bins, length)(常規頻譜圖)或形狀為 (num_mel_filters, length)(梅爾頻譜圖)的頻譜圖。

引數量型別預設描述
waveformFloat32Array | Float64Array

形狀為 (length,) 的輸入波形。這必須是單個實值、單聲道波形。

windowFloat32Array | Float64Array

要應用的窗函式,形狀為 (frame_length,),必要時包括零填充。實際的視窗長度可能比 frame_length 短,但我們假定陣列已經過零填充。

frame_length數字

分析幀的長度(以樣本為單位,即 fft_length)。

hop_length數字

連續分析幀之間的步幅(以樣本為單位)。

選項物件
[options.fft_length]數字

FFT 緩衝區的樣本大小。這決定了頻譜圖將有多少個頻率 bin。為了獲得最佳速度,這應該是一個二次冪。如果為 null,則使用 frame_length

[options.power]數字1.0

如果為 1.0,則返回振幅頻譜圖。如果為 2.0,則返回功率頻譜圖。如果為 null,則返回複數。

[options.center]布林值true

是否填充波形,使幀 t 以時間 t * hop_length 為中心。如果為 false,幀 t 將從時間 t * hop_length 開始。

[options.pad_mode]字串“reflect”

centertrue 時使用的填充模式。可能的值為:"constant"(用零填充)、"edge"(用邊緣值填充)、"reflect"(用映象值填充)。

[options.onesided]布林值true

如果為 true,則只計算正頻率並返回包含 fft_length // 2 + 1 個頻率 bin 的頻譜圖。如果為 false,則也計算負頻率並返回 fft_length 個頻率 bin。

[options.preemphasis]數字

在 DFT 之前應用預加重低通濾波器的係數。

[options.preemphasis_htk_flavor]布林值true

是否以 HTK 風格應用預加重濾波器。

[options.mel_filters]Array.<Array<number>>

形狀為 (num_freq_bins, num_mel_filters) 的梅爾濾波器組。如果提供,則應用此濾波器組以建立梅爾頻譜圖。

[options.mel_floor]數字1e-10

梅爾頻率組的最小值。

[options.log_mel]字串null

如何將頻譜圖轉換為對數刻度。可能的選項是:null(不轉換)、"log"(取自然對數)、"log10"(取以 10 為底的對數)、"dB"(轉換為分貝)。只能在 power 不為 null 時使用。

[options.reference]數字1.0

設定對應於 0 dB 的輸入頻譜圖值。例如,使用 max(spectrogram)[0] 將最響亮的部分設定為 0 dB。必須大於零。

[options.min_value]數字1e-10

頻譜圖在轉換為分貝之前將被裁剪到此最小值,以避免取 log(0)。對於功率頻譜圖,預設值 1e-10 對應於 -100 dB 的最小值。對於振幅頻譜圖,值 1e-5 對應於 -100 dB。必須大於零。

[options.db_range]數字

設定以分貝表示的最大動態範圍。例如,如果 db_range = 80,則峰值與最小值之間的差異永遠不會超過 80 dB。必須大於零。

[options.remove_dc_offset]布林值

從每個幀的波形中減去平均值,在預加重之前應用。為了獲得與 torchaudio.compliance.kaldi.fbank 計算梅爾濾波器時相同的結果,應將其設定為 true

[options.max_num_frames]數字

如果提供,則將計算的幀數限制為此值。

[options.min_num_frames]數字

如果提供,則確保計算的幀數至少為此值。

[options.do_pad]布林值true

如果為 true,則將輸出頻譜圖填充為 max_num_frames 幀。

[options.transpose]布林值false

如果為 true,則返回的頻譜圖形狀為 (num_frames, num_frequency_bins/num_mel_filters)。如果為 false,則返回的頻譜圖形狀為 (num_frequency_bins/num_mel_filters, num_frames)


utils/audio.window_function(window_length, name, options) ⇒ <code> Float64Array </code>

返回包含指定視窗的陣列。

型別utils/audio 的靜態方法
返回Float64Array - 形狀為 (window_length,)(frame_length,) 的視窗。

引數量型別預設描述
window_length數字

視窗的長度(以樣本為單位)。

名稱字串

窗函式的名稱。

選項物件

其他選項。

[options.periodic]布林值true

視窗是週期性的還是對稱的。

[options.frame_length]數字

分析幀的長度(以樣本為單位)。如果視窗小於幀長度,請提供 frame_length 的值,以便將其零填充。

[options.center]布林值true

是否將視窗置於 FFT 緩衝區中心。僅當提供 frame_length 時使用。


utils/audio~generalized_cosine_window(M, a_0) ⇒ <code> Float64Array </code>

生成廣義餘弦視窗特殊情況的輔助函式。更多資訊請參見 https://www.mathworks.com/help/signal/ug/generalized-cosine-windows.html

型別utils/audio 的內部方法
返回Float64Array - 生成的視窗。

引數量型別描述
M數字

輸出視窗中的點數。如果為零或更少,則返回空陣列。

a_0數字

廣義餘弦視窗的偏移量。


utils/audio~hertz_to_mel(freq, [mel_scale]) ⇒ <code> T </code>

型別utils/audio 的內部方法

引數量型別預設
頻率T
[mel_scale]字串"htk"

utils/audio~mel_to_hertz(mels, [mel_scale]) ⇒ <code> T </code>

型別utils/audio 的內部方法

引數量型別預設
梅爾T
[mel_scale]字串"htk"

utils/audio~_create_triangular_filter_bank(fft_freqs, filter_freqs) ⇒ <code> Array.<Array<number>> </code>

建立三角濾波器組。

改編自 torchaudio 和 librosa。

型別utils/audio 的內部方法
返回Array.<Array<number>> - 形狀為 (num_frequency_bins, num_mel_filters)

引數量型別描述
fft_freqsFloat64Array

FFT bin 的離散頻率,單位為赫茲,形狀為 (num_frequency_bins,)

filter_freqsFloat64Array

要建立的三角濾波器的中心頻率,單位為赫茲,形狀為 (num_mel_filters,)


utils/audio~linspace(start, end, num) ⇒

在指定區間內返回均勻分佈的數字。

型別utils/audio 的內部方法
返回num 個均勻分佈的樣本,在區間 [start, stop] 內計算。

引數量型別描述
開始數字

序列的起始值。

結束數字

序列的結束值。

num數字

要生成的樣本數。


utils/audio~padReflect(array, left, right) ⇒ <code> T </code>

型別utils/audio 的內部方法
返回T - 填充後的陣列。

引數量型別描述
arrayT

要填充的陣列。

left數字

左側要新增的填充量。

right數字

右側要新增的填充量。


utils/audio~_db_conversion_helper(spectrogram, factor, reference, min_value, db_range) ⇒ <code> T </code>

計算 amplitude_to_dbpower_to_db 的輔助函式。

型別utils/audio 的內部方法

引數量型別
頻譜圖T
因子數字
參考數字
最小值數字
db_range數字

utils/audio~amplitude_to_db(spectrogram, [reference], [min_value], [db_range]) ⇒ <code> T </code>

將振幅頻譜圖轉換為分貝刻度。這會計算 20 * log10(spectrogram / reference),使用基本對數特性以實現數值穩定性。注意:就地操作。

在(梅爾)頻譜圖上應用對數函式的動機是,人類對響度的感知不是線性刻度。通常,要使聲音的感知音量加倍,我們需要將其能量增加 8 倍。這意味著,如果聲音本來就很響亮,能量的巨大變化可能聽起來並沒有太大區別。這種壓縮操作使(梅爾)頻譜圖特徵更接近人類實際聽到的聲音。

型別utils/audio 的內部方法
返回T - 修改後的分貝頻譜圖。

引數量型別預設描述
頻譜圖T

輸入的振幅(梅爾)頻譜圖。

[reference]數字1.0

設定對應於 0 dB 的輸入頻譜圖值。例如,使用 np.max(spectrogram) 將最響亮的部分設定為 0 dB。必須大於零。

[min_value]數字1e-5

頻譜圖在轉換為分貝之前將被裁剪到此最小值,以避免取 log(0)。預設值 1e-5 對應於 -100 dB 的最小值。必須大於零。

[db_range]數字

設定以分貝表示的最大動態範圍。例如,如果 db_range = 80,則峰值與最小值之間的差異永遠不會超過 80 dB。必須大於零。


utils/audio~power_to_db(spectrogram, [reference], [min_value], [db_range]) ⇒ <code> T </code>

將功率頻譜圖轉換為分貝刻度。這會計算 10 * log10(spectrogram / reference),使用基本對數特性以實現數值穩定性。注意:就地操作。

在(梅爾)頻譜圖上應用對數函式的動機是,人類對響度的感知不是線性刻度。通常,要使聲音的感知音量加倍,我們需要將其能量增加 8 倍。這意味著,如果聲音本來就很響亮,能量的巨大變化可能聽起來並沒有太大區別。這種壓縮操作使(梅爾)頻譜圖特徵更接近人類實際聽到的聲音。

基於 librosa.power_to_db 的實現。

型別utils/audio 的內部方法
返回T - 修改後的分貝頻譜圖。

引數量型別預設描述
頻譜圖T

輸入的功率(梅爾)頻譜圖。請注意,功率頻譜圖的振幅已平方!

[reference]數字1.0

設定對應於 0 dB 的輸入頻譜圖值。例如,使用 np.max(spectrogram) 將最響亮的部分設定為 0 dB。必須大於零。

[min_value]數字1e-10

頻譜圖在轉換為分貝之前將被裁剪到此最小值,以避免取 log(0)。預設值 1e-10 對應於 -100 dB 的最小值。必須大於零。

[db_range]數字

設定以分貝表示的最大動態範圍。例如,如果 db_range = 80,則峰值與最小值之間的差異永遠不會超過 80 dB。必須大於零。


utils/audio~encodeWAV(samples, rate) ⇒ <code> ArrayBuffer </code>

將音訊資料編碼為 WAV 檔案。WAV 檔案規範:https://en.wikipedia.org/wiki/WAV#WAV_File_header

改編自 https://www.npmjs.com/package/audiobuffer-to-wav

型別utils/audio 的內部方法
返回ArrayBuffer - WAV 音訊緩衝區。

引數量型別描述
樣本Float32Array

音訊樣本。

速率數字

取樣率。


< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.