在 Node.js 中创建频谱图

And*_*iga 10 audio spectrogram node.js web-audio-api

如何从 WAV(或 AIFF)中提取时间/频率/幅度信息?我想要一个数组形式的频谱图,例如

\n
[ \n  [ // 1st sample, time\n    [frequency1_t1, amplitude_f1t1], [frequency2_t1, amplitude_f2t1], ...\n  ],\n  [ // 2nd sample, time\n    [frequency1_t2, amplitude_f1t2], [frequency2_t2, amplitude_f2t2], ...\n  ]\n]\n
Run Code Online (Sandbox Code Playgroud)\n

(或类似,形状不相关)

\n

目前我不明白:

\n

我期望一个数组,其中包含频谱中每个频率的值。例如 0.2 代表 40Hz,0.3 代表 41Hz 等等...但我得到一个样本长度一半的数组。

\n

代码:

\n
require(\'dotenv\').config()\nconst fs = require(\'fs\');\nconst ft = require(\'fourier-transform\');\nconst db = require(\'decibels\');\nconst sine = require(\'audio-oscillator/sin\');\nconst WaveFile = require(\'wavefile\');\nconst {unpackArray} = require(\'byte-data\');\n\n\nconst generateLength =  1024// 11289600; // 1024\n\n/**\n * Return the sample at a given index.\n * @param {number} startIndex The sample start index.\n * @param {number} stopIndex The sample stop index.\n * @return {number} The sample.\n * @throws {Error} If the sample index is off range.\n */\nconst getSamples = (wav, startIndex, stopIndex) => {\n    startIndex = startIndex * (wav.dataType.bits / 8);\n    stopIndex = stopIndex * (wav.dataType.bits / 8);\n    if (stopIndex + wav.dataType.bits / 8 > wav.data.samples.length) {\n        throw new Error(\'Range error\');\n    }\n    return unpackArray(\n        wav.data.samples.slice(startIndex, stopIndex),\n        wav.dataType\n    );\n};\n    \n/**\n * Generate a sine wave\n */\nconst generateWav = () => {\n    // generate sine wave 440 Hz\n    const waveform = sine(generateLength, 440); // samples, frequency\n    return waveform\n};\n\n/**\n * Read a wav file from disk\n */\nconst readWav = (callback) => {\n    // return callback(null, generateWav())\n    if (process.env.GENERATE === \'true\') {\n        return callback(null, generateWav())\n    }\n\n    let wav;\n    // read the wav file\n    const filePath = process.env.AUDIO_IN_FOLDER + process.env.AUDIO_FILE;\n    fs.readFile(filePath, (err, buffer) => {\n        if (err) {\n            return callback(err);\n        }\n        wav = new WaveFile(buffer);\n        \n        const samples = getSamples(wav, 0, 1024);\n        return callback(null, samples);\n    })\n};\n\n/**\n * Process the wav\n*/\nreadWav((err, samples) => {\n    if (err) {\n        throw new Error(err);\n    }\n\n    // in case I create the sine wave, I get an array of length 1024, with values from -1 to +1\n    // the same applies for the wav\n    console.log(\'samples\', samples, samples.length);\n\n    // get normalized magnitudes for frequencies from 0 to 22050 with interval 44100/1024 \xe2\x89\x88 43Hz\n    // I get an array of length 512 (probably 1024/ 2 channels) with value from 0 - 0.7 (max prob. 1)\n  \n    const spectrum = ft(samples);\n    console.table(spectrum);\n\n    // //convert to decibels\n    // const decibels = spectrum.map((value) => db.fromGain(value));\n    // console.table(decibels);\n});\n
Run Code Online (Sandbox Code Playgroud)\n

我想检索差异处的振幅。频率。

\n

PS:\n我设法使用网络音频 API 在浏览器中执行此操作,但到目前为止我找到的唯一用于 Node.js 的包是:\n https://github.com/audiojs/web-audio-api已被放弃。

\n

编辑:我发现另一个库可以提供更合理的结果:

\n
const fft = require(\'fft-js\').fft;\nconst fftUtil = require(\'fft-js\').util;\n\n/**\n * Process the wav\n */\n\nconst phasors = fft(generateWav());\n\nconst frequencies = fftUtil.fftFreq(phasors, 44100), // Sample rate and coef is just used for length, and frequency step\n    magnitudes = fftUtil.fftMag(phasors);\n\nconst both = frequencies.map(function (f, ix) {\n    return {frequency: f, magnitude: magnitudes[ix]};\n});\n\nconsole.table(both);\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 (index) \xe2\x94\x82   frequency    \xe2\x94\x82     magnitude      \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82    0    \xe2\x94\x82       0        \xe2\x94\x82 12.152954611168916 \xe2\x94\x82\n\xe2\x94\x82    1    \xe2\x94\x82  43.06640625   \xe2\x94\x82 12.371840124428138 \xe2\x94\x82\n\xe2\x94\x82    2    \xe2\x94\x82   86.1328125   \xe2\x94\x82 13.049660038632785 \xe2\x94\x82\n\xe2\x94\x82    3    \xe2\x94\x82  129.19921875  \xe2\x94\x82 14.257748464539002 \xe2\x94\x82\n\xe2\x94\x82    4    \xe2\x94\x82   172.265625   \xe2\x94\x82 16.145493015641954 \xe2\x94\x82\n\xe2\x94\x82    5    \xe2\x94\x82  215.33203125  \xe2\x94\x82 19.006782054318574 \xe2\x94\x82\n\xe2\x94\x82    6    \xe2\x94\x82  258.3984375   \xe2\x94\x82 23.444013431023404 \xe2\x94\x82\n\xe2\x94\x82    7    \xe2\x94\x82  301.46484375  \xe2\x94\x82 30.839530345061696 \xe2\x94\x82\n\xe2\x94\x82    8    \xe2\x94\x82   344.53125    \xe2\x94\x82 45.104565448543774 \xe2\x94\x82\n\xe2\x94\x82    9    \xe2\x94\x82  387.59765625  \xe2\x94\x82 83.05529774944604  \xe2\x94\x82\n\xe2\x94\x82   10    \xe2\x94\x82  430.6640625   \xe2\x94\x82 471.99329683509916 \xe2\x94\x82\n\xe2\x94\x82   11    \xe2\x94\x82  473.73046875  \xe2\x94\x82 132.38812248080427 \xe2\x94\x82\n\xe2\x94\x82   12    \xe2\x94\x82   516.796875   \xe2\x94\x82 58.94894310683054  \xe2\x94\x82\n\xe2\x94\x82   13    \xe2\x94\x82  559.86328125  \xe2\x94\x82 38.29097615220791  \xe2\x94\x82\n\xe2\x94\x82   14    \xe2\x94\x82  602.9296875   \xe2\x94\x82 28.55339797808452  \xe2\x94\x82\n\xe2\x94\x82   15    \xe2\x94\x82  645.99609375  \xe2\x94\x82  22.8834459943328  \xe2\x94\x82\n\xe2\x94\x82   16    \xe2\x94\x82    689.0625    \xe2\x94\x82 19.169092636055744 \xe2\x94\x82\n\xe2\x94\x82   17    \xe2\x94\x82  732.12890625  \xe2\x94\x82 16.544346462620222 \xe2\x94\x82\n\xe2\x94\x82   18    \xe2\x94\x82  775.1953125   \xe2\x94\x82 14.588639163496254 \xe2\x94\x82\n\xe2\x94\x82   19    \xe2\x94\x82  818.26171875  \xe2\x94\x82 13.073165838642582 \xe2\x94\x82\n\xe2\x94\x82   20    \xe2\x94\x82   861.328125   \xe2\x94\x82 11.862817675507356 \xe2\x94\x82\n\xe2\x94\x82   21    \xe2\x94\x82  904.39453125  \xe2\x94\x82 10.872696852206447 \xe2\x94\x82\n\xe2\x94\x82   22    \xe2\x94\x82  947.4609375   \xe2\x94\x82 10.04678419250667  \xe2\x94\x82\n\xe2\x94\x82   23    \xe2\x94\x82  990.52734375  \xe2\x94\x82 9.346626225654326  \xe2\x94\x82\n\xe2\x94\x82   24    \xe2\x94\x82   1033.59375   \xe2\x94\x82 8.744951406922706  \xe2\x94\x82\n\xe2\x94\x82   25    \xe2\x94\x82 1076.66015625  \xe2\x94\x82 8.221880329631402  \xe2\x94\x82\n\xe2\x94\x82   26    \xe2\x94\x82  1119.7265625  \xe2\x94\x82 7.762578689775234  \xe2\x94\x82\n\xe2\x94\x82   27    \xe2\x94\x82 1162.79296875  \xe2\x94\x82 7.355750727231507  \xe2\x94\x82\n\xe2\x94\x82   28    \xe2\x94\x82  1205.859375   \xe2\x94\x82 6.992641946837161  \xe2\x94\x82\n\xe2\x94\x82   29    \xe2\x94\x82 1248.92578125  \xe2\x94\x82 6.666361076689498  \xe2\x94\x82\n\xe2\x94\x82   30    \xe2\x94\x82  1291.9921875  \xe2\x94\x82 6.371408134738898  \xe2\x94\x82\n\xe2\x94\x82   31    \xe2\x94\x82 1335.05859375  \xe2\x94\x82 6.103339064749246  \xe2\x94\x82\n\xe2\x94\x82   32    \xe2\x94\x82    1378.125    \xe2\x94\x82 5.858522971508816  \xe2\x94\x82\n\xe2\x94\x82   33    \xe2\x94\x82 1421.19140625  \xe2\x94\x82 5.633963445745503  \xe2\x94\x82\n\xe2\x94\x82   34    \xe2\x94\x82  1464.2578125  \xe2\x94\x82 5.427165073795851  \xe2\x94\x82\n\xe2\x94\x82   35    \xe2\x94\x82 1507.32421875  \xe2\x94\x82 5.236032340013399  \xe2\x94\x82\n\xe2\x94\x82   36    \xe2\x94\x82  1550.390625   \xe2\x94\x82 5.058792106400648  \xe2\x94\x82\n\xe2\x94\x82   37    \xe2\x94\x82 1593.45703125  \xe2\x94\x82 4.893933492369614  \xe2\x94\x82\n\xe2\x94\x82   38    \xe2\x94\x82  1636.5234375  \xe2\x94\x82  4.74016075996692  \xe2\x94\x82\n\xe2\x94\x82   39    \xe2\x94\x82 1679.58984375  \xe2\x94\x82 4.596356034064684  \xe2\x94\x82\n\xe2\x94\x82   40    \xe2\x94\x82   1722.65625   \xe2\x94\x82 4.461549540593798  \xe2\x94\x82\n\xe2\x94\x82   41    \xe2\x94\x82 1765.72265625  \xe2\x94\x82 4.334895649436749  \xe2\x94\x82\n\xe2\x94\x82   42    \xe2\x94\x82  1808.7890625  \xe2\x94\x82  4.21565344088737  \xe2\x94\x82\n\xe2\x94\x82   43    \xe2\x94\x82 1851.85546875  \xe2\x94\x82  4.10317082794807  \xe2\x94\x82\n\xe2\x94\x82   44    \xe2\x94\x82  1894.921875   \xe2\x94\x82 3.9968714964351753 \xe2\x94\x82\n\xe2\x94\x82   45    \xe2\x94\x82 1937.98828125  \xe2\x94\x82 3.896244094995214  \xe2\x94\x82\n\xe2\x94\x82   46    \xe2\x94\x82  1981.0546875  \xe2\x94\x82 3.8008332343806863 \xe2\x94\x82\n\xe2\x94\x82   47    \xe2\x94\x82 2024.12109375  \xe2\x94\x82 3.710231951372898  \xe2\x94\x82\n\xe2\x94\x82   48    \xe2\x94\x82   2067.1875    \xe2\x94\x82 3.624075365850696  \xe2\x94\x82\n\xe2\x94\x82   49    \xe2\x94\x82 2110.25390625  \xe2\x94\x82 3.5420353156097173 \xe2\x94\x82\n\xe2\x94\x82   50    \xe2\x94\x82  2153.3203125  \xe2\x94\x82 3.463815796922526  \xe2\x94\x82\n\xe2\x94\x82   51    \xe2\x94\x82 2196.38671875  \xe2\x94\x82 3.3891490726204667 \xe2\x94\x82\n\xe2\x94\x82   52    \xe2\x94\x82  2239.453125   \xe2\x94\x82 3.317792335974296  \xe2\x94\x82\n\xe2\x94\x82   53    \xe2\x94\x82 2282.51953125  \xe2\x94\x82 3.2495248395633305 \xe2\x94\x82\n\xe2\x94\x82   54    \xe2\x94\x82  2325.5859375  \xe2\x94\x82 3.184145414927604  \xe2\x94\x82\n\xe2\x94\x82   55    \xe2\x94\x82 2368.65234375  \xe2\x94\x82 3.121470322059914  \xe2\x94\x82\n\xe2\x94\x82   56    \xe2\x94\x82   2411.71875   \xe2\x94\x82 3.0613313784448493 \xe2\x94\x82\n\xe2\x94\x82   57    \xe2\x94\x82 2454.78515625  \xe2\x94\x82 3.0035743259530703 \xe2\x94\x82\n\xe2\x94\x82   58    \xe2\x94\x82  2497.8515625  \xe2\x94\x82 2.9480574008737856 \xe2\x94\x82\n\xe2\x94\x82   59    \xe2\x94\x82 2540.91796875  \xe2\x94\x82 2.8946500780591413 \xe2\x94\x82\n\xe2\x94\x82   60    \xe2\x94\x82  2583.984375   \xe2\x94\x82 2.843231964813001  \xe2\x94\x82\n\xe2\x94\x82   61    \xe2\x94\x82 2627.05078125  \xe2\x94\x82 2.7936918239895956 \xe2\x94\x82\n\xe2\x94\x82   62    \xe2\x94\x82  2670.1171875  \xe2\x94\x82 2.7459267089345327 \xe2\x94\x82\n\xe2\x94\x82   63    \xe2\x94\x82 2713.18359375  \xe2\x94\x82 2.6998411955269557 \xe2\x94\x82\n\xe2\x94\x82   64    \xe2\x94\x82    2756.25     \xe2\x94\x82  2.65534669876918  \xe2\x94\x82\n\xe2\x94\x82   65    \xe2\x94\x82 2799.31640625  \xe2\x94\x82 2.6123608631974977 \xe2\x94\x82\n\xe2\x94\x82   66    \xe2\x94\x82  2842.3828125  \xe2\x94\x82 2.570807017921727  \xe2\x94\x82\n\xe2\x94\x82   67    \xe2\x94\x82 2885.44921875  \xe2\x94\x82 2.5306136883907895 \xe2\x94\x82\n\xe2\x94\x82   68    \xe2\x94\x82  2928.515625   \xe2\x94\x82 2.491714158071842  \xe2\x94\x82\n\xe2\x94\x82   69    \xe2\x94\x82 2971.58203125  \xe2\x94\x82 2.4540460741530628 \xe2\x94\x82\n\xe2\x94\x82   70    \xe2\x94\x82  3014.6484375  \xe2\x94\x82 2.4175510921649352 \xe2\x94\x82\n\xe2\x94\x82   71    \xe2\x94\x82 3057.71484375  \xe2\x94\x82 2.3821745550828988 \xe2\x94\x82\n\xe2\x94\x82   72    \xe2\x94\x82   3100.78125   \xe2\x94\x82 2.3478652030460068 \xe2\x94\x82\n\xe2\x94\x82   73    \xe2\x94\x82 3143.84765625  \xe2\x94\x82 2.3145749103153315 \xe2\x94\x82\n\xe2\x94\x82   74    \xe2\x94\x82  3186.9140625  \xe2\x94\x82 2.282258446516979  \xe2\x94\x82\n\xe2\x94\x82   75    \xe2\x94\x82 3229.98046875  \xe2\x94\x82 2.2508732595769505 \xe2\x94\x82\n\xe2\x94\x82   76    \xe2\x94\x82  3273.046875   \xe2\x94\x82 2.220379278067911  \xe2\x94\x82\n\xe2\x94\x82   77    \xe2\x94\x82 3316.11328125  \xe2\x94\x82 2.1907387309594126 \xe2\x94\x82\n\xe2\x94\x82   78    \xe2\x94\x82  3359.1796875  \xe2\x94\x82 2.1619159829977477 \xe2\x94\x82\n\xe2\x94\x82   79    \xe2\x94\x82 3402.24609375  \xe2\x94\x82 2.1338773841468113 \xe2\x94\x82\n\xe2\x94\x82   80    \xe2\x94\x82   3445.3125    \xe2\x94\x82 2.1065911316990023 \xe2\x94\x82\n\xe2\x94\x82   81    \xe2\x94\x82 3488.37890625  \xe2\x94\x82 2.0800271438214692 \xe2\x94\x82\n\xe2\x94\x82   82    \xe2\x94\x82  3531.4453125  \xe2\x94\x82 2.054156943439062  \xe2\x94\x82\n\xe2\x94\x82   83    \xe2\x94\x82 3574.51171875  \xe2\x94\x82 2.0289535514749724 \xe2\x94\x82\n\xe2\x94\x82   84    \xe2\x94\x82  3617.578125   \xe2\x94\x82 2.0043913885751485 \xe2\x94\x82\n\xe2\x94\x82   85    \xe2\x94\x82 3660.64453125  \xe2\x94\x82 1.9804461845350614 \xe2\x94\x82\n\xe2\x94\x82   86    \xe2\x94\x82  3703.7109375  \xe2\x94\x82 1.9570948947290032 \xe2\x94\x82\n\xe2\x94\x82   87    \xe2\x94\x82 3746.77734375  \xe2\x94\x82 1.9343156229142768 \xe2\x94\x82\n\xe2\x94\x82   88    \xe2\x94\x82   3789.84375   \xe2\x94\x82 1.9120875498459815 \xe2\x94\x82\n\xe2\x94\x82   89    \xe2\x94\x82 3832.91015625  \xe2\x94\x82 1.8903908671957874 \xe2\x94\x82\n\xe2\x94\x82   90    \xe2\x94\x82  3875.9765625  \xe2\x94\x82 1.8692067163169377 \xe2\x94\x82\n\xe2\x94\x82   91    \xe2\x94\x82 3919.04296875  \xe2\x94\x82 1.8485171314433517 \xe2\x94\x82\n\xe2\x94\x82   92    \xe2\x94\x82  3962.109375   \xe2\x94\x82 1.8283049869505235 \xe2\x94\x82\n\xe2\x94\x82   93    \xe2\x94\x82 4005.17578125  \xe2\x94\x82 1.8085539483406927 \xe2\x94\x82\n\xe2\x94\x82   94    \xe2\x94\x82  4048.2421875  \xe2\x94\x82 1.789248426647436  \xe2\x94\x82\n\xe2\x94\x82   95    \xe2\x94\x82 4091.30859375  \xe2\x94\x82 1.770373535982654  \xe2\x94\x82\n\xe2\x94\x82   96    \xe2\x94\x82    4134.375    \xe2\x94\x82 1.7519150539745088 \xe2\x94\x82\n\xe2\x94\x82   97    \xe2\x94\x82 4177.44140625  \xe2\x94\x82 1.733859384867805  \xe2\x94\x82\n\xe2\x94\x82   98    \xe2\x94\x82  4220.5078125  \xe2\x94\x82 1.7161935250787304 \xe2\x94\x82\n\xe2\x94\x82   99    \xe2\x94\x82 4263.57421875  \xe2\x94\x82 1.6989050310145166 \xe2\x94\x82\n\xe2\x94\x82   100   \xe2\x94\x82  4306.640625   \xe2\x94\x82 1.6819819889848078 \xe2\x94\x82\n\xe2\x94\x82   101   \xe2\x94\x82 4349.70703125  \xe2\x94\x82 1.6654129870471555 \xe2\x94\x82\n\xe2\x94\x82   102   \xe2\x94\x82  4392.7734375  \xe2\x94\x82 1.649187088641961  \xe2\x94\x82\n\xe2\x94\x82   103   \xe2\x94\x82 4435.83984375  \xe2\x94\x82 1.6332938078849353 \xe2\x94\x82\n\xe2\x94\x82   104   \xe2\x94\x82   4478.90625   \xe2\x94\x82 1.6177230863958667 \xe2\x94\x82\n\xe2\x94\x82   105   \xe2\x94\x82 4521.97265625  \xe2\x94\x82 1.6024652715528576 \xe2\x94\x82\n\xe2\x94\x82   106   \xe2\x94\x82  4565.0390625  \xe2\x94\x82 1.5875110960700973 \xe2\x94\x82\n\xe2\x94\x82   107   \xe2\x94\x82 4608.10546875  \xe2\x94\x82 1.5728516588054446 \xe2\x94\x82\n\xe2\x94\x82   108   \xe2\x94\x82  4651.171875   \xe2\x94\x82 1.5584784067120494 \xe2\x94\x82\n\xe2\x94\x82   109   \xe2\x94\x82 4694.23828125  \xe2\x94\x82 1.5443831178544063 \xe2\x94\x82\n\xe2\x94\x82   110   \xe2\x94\x82  4737.3046875  \xe2\x94\x82 1.5305578854161885 \xe2\x94\x82\n\xe2\x94\x82   111   \xe2\x94\x82 4780.37109375  \xe2\x94\x82 1.5169951026323973 \xe2\x94\x82\n\xe2\x94\x82   112   \xe2\x94\x82   4823.4375    \xe2\x94\x82 1.503687448583734  \xe2\x94\x82\n\xe2\x94\x82   113   \xe2\x94\x82 4866.50390625  \xe2\x94\x82 1.4906278747959294 \xe2\x94\x82\n\xe2\x94\x82   114   \xe2\x94\x82  4909.5703125  \xe2\x94\x82 1.4778095925909394 \xe2\x94\x82\n\xe2\x94\x82   115   \xe2\x94\x82 4952.63671875  \xe2\x94\x82 1.465226061140952  \xe2\x94\x82\n\xe2\x94\x82   116   \xe2\x94\x82  4995.703125   \xe2\x94\x82 1.452870976179976  \xe2\x94\x82\n\xe2\x94\x82   117   \xe2\x94\x82 5038.76953125  \xe2\x94\x82 1.4407382593305655 \xe2\x94\x82\n\xe2\x94\x82   118   \xe2\x94\x82  5081.8359375  \xe2\x94\x82 1.4288220480072211 \xe2\x94\x82\n\xe2\x94\x82   119   \xe2\x94\x82 5124.90234375  \xe2\x94\x82 1.4171166858597923 \xe2\x94\x82\n\xe2\x94\x82   120   \xe2\x94\x82   5167.96875   \xe2\x94\x82 1.4056167137234505 \xe2\x94\x82\n\xe2\x94\x82   121   \xe2\x94\x82 5211.03515625  \xe2\x94\x82 1.3943168610441796 \xe2\x94\x82\n\xe2\x94\x82   122   \xe2\x94\x82  5254.1015625  \xe2\x94\x82 1.383212037750449  \xe2\x94\x82\n\xe2\x94\x82   123   \xe2\x94\x82 5297.16796875  \xe2\x94\x82 1.3722973265443272 \xe2\x94\x82\n\xe2\x94\x82   124   \xe2\x94\x82  5340.234375   \xe2\x94\x82 1.3615679755866048 \xe2\x94\x82\n\xe2\x94\x82   125   \xe2\x94\x82 5383.30078125  \xe2\x94\x82 1.3510193915528388 \xe2\x94\x82\n\xe2\x94\x82   126   \xe2\x94\x82  5426.3671875  \xe2\x94\x82 1.3406471330380145 \xe2\x94\x82\n\xe2\x94\x82   127   \xe2\x94\x82 5469.43359375  \xe2\x94\x82 1.3304469042899936 \xe2\x94\x82\n\xe2\x94\x82   128   \xe2\x94\x82     5512.5     \xe2\x94\x82 1.3204145492521742 \xe2\x94\x82\n\xe2\x94\x82   129   \xe2\x94\x82 5555.56640625  \xe2\x94\x82 1.310546045897987  \xe2\x94\x82\n\xe2\x94\x82   130   \xe2\x94\x82  5598.6328125  \xe2\x94\x82 1.3008375008404036 \xe2\x94\x82\n\xe2\x94\x82   131   \xe2\x94\x82 5641.69921875  \xe2\x94\x82 1.291285144201002  \xe2\x94\x82\n\xe2\x94\x82   132   \xe2\x94\x82  5684.765625   \xe2\x94\x82 1.2818853247240856 \xe2\x94\x82\n\xe2\x94\x82   133   \xe2\x94\x82 5727.83203125  \xe2\x94\x82 1.2726345051221066 \xe2\x94\x82\n\xe2\x94\x82   134   \xe2\x94\x82  5770.8984375  \xe2\x94\x82 1.2635292576398605 \xe2\x94\x82\n\xe2\x94\x82   135   \xe2\x94\x82 5813.96484375  \xe2\x94\x82 1.2545662598252671 \xe2\x94\x82\n\xe2\x94\x82   136   \xe2\x94\x82   5857.03125   \xe2\x94\x82 1.2457422904957558 \xe2\x94\x82\n\xe2\x94\x82   137   \xe2\x94\x82 5900.09765625  \xe2\x94\x82 1.2370542258895871 \xe2\x94\x82\n\xe2\x94\x82   138   \xe2\x94\x82  5943.1640625  \xe2\x94\x82 1.2284990359922503 \xe2\x94\x82\n\xe2\x94\x82   139   \xe2\x94\x82 5986.23046875  \xe2\x94\x82 1.2200737810288795 \xe2\x94\x82\n\xe2\x94\x82   140   \xe2\x94\x82  6029.296875   \xe2\x94\x82 1.2117756081135687 \xe2\x94\x82\n\xe2\x94\x82   141   \xe2\x94\x82 6072.36328125  \xe2\x94\x82 1.2036017480478065 \xe2\x94\x82\n\xe2\x94\x82   142   \xe2\x94\x82  6115.4296875  \xe2\x94\x82 1.1955495122601592 \xe2\x94\x82\n\xe2\x94\x82   143   \xe2\x94\x82 6158.49609375  \xe2\x94\x82 1.1876162898798384 \xe2\x94\x82\n\xe2\x94\x82   144   \xe2\x94\x82   6201.5625    \xe2\x94\x82 1.1797995449375729 \xe2\x94\x82\n\xe2\x94\x82   145   \xe2\x94\x82 6244.62890625  \xe2\x94\x82 1.1720968136870935 \xe2\x94\x82\n\xe2\x94\x82   146   \xe2\x94\x82  6287.6953125  \xe2\x94\x82 1.164505702041419  \xe2\x94\x82\n\xe2\x94\x82   147   \xe2\x94\x82 6330.76171875  \xe2\x94\x82 1.1570238831180508 \xe2\x94\x82\n\xe2\x94\x82   148   \xe2\x94\x82  6373.828125   \xe2\x94\x82 1.1496490948877365 \xe2\x94\x82\n\xe2\x94\x82   149   \xe2\x94\x82 6416.89453125  \xe2\x94\x82 1.1423791379217956 \xe2\x94\x82\n\xe2\x94\x82   150   \xe2\x94\x82  6459.9609375  \xe2\x94\x82 1.1352118732330423 \xe2\x94\x82\n\xe2\x94\x82   151   \xe2\x94\x82 6503.02734375  \xe2\x94\x82 1.1281452202060451 \xe2\x94\x82\n\xe2\x94\x82   152   \xe2\x94\x82   6546.09375   \xe2\x94\x82 1.121177154611966  \xe2\x94\x82\n\xe2\x94\x82   153   \xe2\x94\x82 6589.16015625  \xe2\x94\x82 1.1143057067045552 \xe2\x94\x82\n\xe2\x94\x82   154   \xe2\x94\x82  6632.2265625  \xe2\x94\x82 1.1075289593929885 \xe2\x94\x82\n\xe2\x94\x82   155   \xe2\x94\x82 6675.29296875  \xe2\x94\x82 1.1008450464880004 \xe2\x94\x82\n\xe2\x94\x82   156   \xe2\x94\x82  6718.359375   \xe2\x94\x82 1.0942521510181538 \xe2\x94\x82\n\xe2\x94\x82   157   \xe2\x94\x82 6761.42578125  \xe2\x94\x82 1.087748503

som*_*ser 3

目前我不明白:

我期望一个数组,其中包含频谱中每个频率的值。例如 0.2 代表 40Hz,0.3 代表 41Hz 等等...但我得到一个样本长度一半的数组。

可以不失真地表示的最大频率不等于采样频率。这是一半: https: //en.wikipedia.org/wiki/Nyquist_Frequency