Анализ данных частоты с входного узла микрофона js - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть код, который анализирует данные частоты из потокового файла в режиме реального времени.Я пытаюсь выяснить, как преобразовать это, чтобы вместо потоковой передачи из файла я мог анализировать данные, поступающие в строку ввода на моем компьютере Mac.

Код анализа, который у меня есть:

const fs = require('fs');
const fsa = require('fs-extra');
const Lame     = require('lame');
const Speaker  = require('speaker');
const Volume   = require('pcm-volume');
const Analyser = require('audio-analyser')
const request  = require('request')
const Chunker  = require('stream-chunker');
const { YIN } = require('node-pitchfinder')
const detectPitch = YIN({ sampleRate: 44100})
//const BUFSIZE  = 64;
const BUFSIZE  = 10000;


var decoder   = new Lame.Decoder();	
decoder.on('format', function(format){onFormat(format)});

var chunker  = Chunker(BUFSIZE);
chunker.pipe(decoder);	





var audio_stream = fs.createReadStream('./2000.mp3');

audio_stream.pipe(chunker);

function onFormat(format)
{
	//if (volume == "undefined")
	volume = 1.0;
	
	vol      = new Volume(volume);
	speaker  = new Speaker(format);
	analyser = createAnalyser(format);
	analyser.on('data', sample);
	
	console.log(format);
	vol.pipe(speaker);	
	vol.pipe(analyser);	
	decoder.pipe(vol);
	vol.setVolume(volume);
}


function createAnalyser(format)
{
	return new Analyser({
		fftSize: 8,
	        bufferSize: BUFSIZE,
	        'pcm-stream': {
			channels: format.channels,
			sampleRate: format.sampleRate,
			bitDepth: format.bitDepth
		}
	});
}


var logFile = 'log.txt';
var logOptions = {flag: 'a'};

function sample()
{

	if (analyser) {

		const frequency = detectPitch(analyser._data)
  		console.log(frequency)
	}
}

Это хорошо работает, но я не уверен, как преобразовать это, чтобы вместо этого прослушивать микрофонный вход.Я попытался использовать npm 'mic', но безуспешно.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...