簡體   English   中英

如何使用 Node.js 將音頻樣本數組寫入 wav 文件?

[英]How can I write an array of audio samples to a wav file with Node.js?

我正在用 JavaScript 編寫一個振盪器,它在正弦波頻率之間創建一個掃描(即啁啾)。 為了測試,我想將樣本(浮點數)寫入 wav 文件。 我將如何在 Node.js 中做到這一點? 我已經看到了很多關於瀏覽器端的信息,但沒有任何特定於 Node 或任何依賴於瀏覽器 API 的信息。

這可以使用最小包node-wav和類似於下面的代碼段來完成:

首先,安裝依賴:

npm i node-wav

然后,使用類似

let fs = require('fs');
let wav = require('node-wav');

// Parameters for the below data
const size =  5000
const amplitude = 128
const sampleRate = 20

// Generate some random data for testing
const data = (new Array(3)).fill((new Array(size)).fill(Math.random() * amplitude))

let buffer = wav.encode(data, { sampleRate: sampleRate, float: true, bitDepth: 32 });

fs.writeFile("test.wav", buffer, (err) => {
  if (err) return console.log(err);

  console.log("test.wav written");
});

考慮到您已經知道數據的應用,您知道所有“常量”參數(輸出大小、比特率、要寫入的實際數據、位深度)。

您可以使用內置的 Node.js fs.writeFile() api 寫入文件。

順便說一句,我認為您所要做的就是循環播放音頻樣本,將它們添加到迭代中的字符串中,然后將該字符串放入一個文件中,如下所示:

const fs = require("fs");

// Code to generate audio

let audio = "";

samples.forEach((sample) => {
  audio += sample;
});

fs.writeFile("path/to/file.wav or .mp3", audio, (err) => {
  if (err) return console.error(err);

  console.log("File successfully saved!");
});

如果我正確理解您的問題,那么這應該可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM