如何使用Node.js将音频样本数组写入wav文件

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

本文关键字:数组 wav 文件 样本数 样本 Node 何使用 js 音频      更新时间:2024-04-12

我正在用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!");
});

如果我正确理解你的问题,那么这个应该有效。