Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Node.js将音频样本数组写入wav文件?_Javascript_Node.js_Audio_Wav_Javascript Oscillator - Fatal编程技术网

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

Javascript 如何使用Node.js将音频样本数组写入wav文件?,javascript,node.js,audio,wav,javascript-oscillator,Javascript,Node.js,Audio,Wav,Javascript Oscillator,我正在用JavaScript编写一个振荡器,在正弦波频率之间创建一个扫描(即啁啾)。对于测试,我想将样本(浮动)写入wav文件。如何在Node.js中实现这一点?我已经看到了很多关于浏览器端的信息,但没有任何特定于节点或任何依赖浏览器API的信息。这可以使用最小的包节点wav和类似于下面的代码片段来完成: 首先,安装依赖项: npm i节点wav 然后,使用类似 让fs=require('fs'); 设wav=require('node-wav'); //以下数据的参数 常数大小=5000 常

我正在用JavaScript编写一个振荡器,在正弦波频率之间创建一个扫描(即啁啾)。对于测试,我想将样本(浮动)写入wav文件。如何在Node.js中实现这一点?我已经看到了很多关于浏览器端的信息,但没有任何特定于节点或任何依赖浏览器API的信息。

这可以使用最小的包
节点wav
和类似于下面的代码片段来完成:

首先,安装依赖项:

npm i节点wav
然后,使用类似

让fs=require('fs');
设wav=require('node-wav');
//以下数据的参数
常数大小=5000
常数振幅=128
常数采样器=20
//生成一些用于测试的随机数据
常量数据=(新数组(3)).fill((新数组(大小)).fill(Math.random()*振幅))
让buffer=wav.encode(数据,{sampleRate:sampleRate,float:true,bitDepth:32});
fs.writeFile(“test.wav”,缓冲区,(err)=>{
if(err)返回console.log(err);
console.log(“test.wav编写”);
});

考虑到您已经知道数据的应用程序,您知道所有“常量”参数(输出大小、比特率、要写入的实际数据、比特深度)。

您可以使用内置的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!");
});

如果我正确理解了您的问题,那么这应该会起作用。

audiorecorder.js中有一个例程可以做到这一点。您不需要整个用于浏览器的库,但它确实有wav生成例程……对于答案来说并不重要,因为它只用于生成测试数据,但我想我要提到的是,它不需要任何参数。@JustinTaddei确实不需要。我修复了无法使节点wav工作的“bug”。我找到了另一个选择:它有相似的语法。尽管它已经4年没有维护了(在写这篇文章时),
wav编码器仍在工作。考虑到wav格式规范在过去十年中没有太大变化(请参阅),这些模块可能都能完成这项工作(当然,除非核心节点或js的变化打破了它们)。嗯,不:这不会创建wav文件。你可以在文件路径的末尾添加.wav或.mp3,哪一个适合你哦,真的吗?因此,如果我创建一个文本文件并将扩展名更改为
.xls
,它现在就是一个excel电子表格?嗯。。。好啊我的回答假设您的数据已经是.wav或.mp3格式。如果不是.wav或.mp3,它是什么格式?此外,我不知道如何将文本转换为excel电子表格,但我知道您可以使用.jpg转换为.png,然后再转换回来,不会有任何问题。