如何使用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!");
});
如果我正确理解你的问题,那么这个应该有效。
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 如何使用Node.js将音频样本数组写入wav文件
- 如何将音频数据数组转换为wav文件