我正在使用JavaScript编写一个振荡器,它可以在正弦波频率之间创建扫频(即啁啾)效果。为了测试,我想将样本(浮点数)写入到wav文件中。在Node.js中该怎么做呢?我看到了很多关于浏览器端的信息,但没有任何特定于Node的内容或依赖于浏览器API的内容。
我正在使用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!");
});
如果我理解你的问题正确,那么这个应该可以工作。