[英]Convert Between 16 bit Scaled PCM Data to Floating Point PCM Data C++
[英]FFT on the 8 bit PCM signal
我在node-js中使用這種快速傅立葉變換實現: https : //www.npmjs.com/package/fft-js 。
我正在使用wav閱讀器,它讀取我的wav文件,該文件被編碼為8位PCM,並以8位無符號整數的數組形式輸出數據。
我看到fft-js期望信號值從-1到1,如本例用法所示:
var fft = require('fft-js').fft,
signal = [1,0,1,0];
var phasors = fft(signal);
console.log(phasors);
我該怎么辦? 我應該將wav文件的8位pcm表示形式轉換為-1和1之間的值嗎?
根據Wikipedia上的這篇文章 ,您應該能夠獲取8位uint數據並將其映射到-1和1之間的數字,類似於以下內容:
let arrForFFT = uint8Array.map(num => (num - 128) / 128)
如果我的uint8Array
看起來像這樣:
[ 256, 192, 128, 64, 0]
然后arrForFFT
看起來像這樣:
[ 1, 0.5, 0, -0.5, -1]
編輯:如果您不使用ES2015,代碼將如下所示:
var arrForFFT = uint8Array.map(function(num) {
return (num - 128) / 128
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.