Считайте вывод звука компьютера в Node.js и проанализируйте звук - PullRequest
0 голосов
/ 21 июня 2020

Я не могу найти пакет Node.js npm, который позволяет мне записывать текущий вывод звука моей ma c и анализировать его.

Я пытаюсь создайте визуализатор musi c, который просто показывает текущую громкость звука, воспроизводимого с компьютера.

Есть ли у кого-нибудь советы или идеи о том, какой пакет использовать?

1 Ответ

0 голосов
/ 21 июня 2020

Вы можете использовать 'node-audiorecorder' для захвата аудиоданных временных рядов в виде потока WAV. -> node-audiorecorder

Это в основном даст вам значения с плавающей запятой, с которыми вы могли бы работать. Пример приведенного выше кода:

// Import module.
const AudioRecorder = require('node-audiorecorder');
 
// Options is an optional parameter for the constructor call.
// If an option is not given the default value, as seen below, will be used.
const options = {
  program: `rec`,     // Which program to use, either `arecord`, `rec`, or `sox`.
  device: null,       // Recording device to use, e.g. `hw:1,0`
 
  bits: 16,           // Sample size. (only for `rec` and `sox`)
  channels: 1,        // Channel count.
  encoding: `signed-integer`,  // Encoding type. (only for `rec` and `sox`)
  format: `S16_LE`,   // Encoding type. (only for `arecord`)
  rate: 16000,        // Sample rate.
  type: `wav`,        // Format type.
 
  // Following options only available when using `rec` or `sox`.
  silence: 2,         // Duration of silence in seconds before it stops recording.
  thresholdStart: 0.5,  // Silence threshold to start recording.
  thresholdStop: 0.5,   // Silence threshold to stop recording.
  keepSilence: true   // Keep the silence in the recording.
};
// Optional parameter intended for debugging.
// The object has to implement a log and warn function.
const logger = console;
 
// Create an instance.
let audioRecorder = new AudioRecorder(options, logger);

Вы можете использовать захваченные вами данные и использовать audio-render для любого анализа, который вам нужно сделать. (В библиотеке есть несколько функций для сбора данных)

myAudioStream
.pipe(Render(function (canvas) {
    var data = this.getFloatTimeDomainData();
 
    //draw volume, spectrum, spectrogram, waveform — any data you need
}))
.pipe(Speaker());
...