recorder-client
v1.0.7
Published
audio recording client
Maintainers
Readme
recorder-client
audio recording client
install
npm i recorder-clientAPI
| property | type | description | default | | :--------: | :-----: | :-------------------------------------------------------------------------: | :-------: | | sampleRate | number | audio sampling rate | undefined | | chunkSize | number | number of samples in the audio data block (length of the audio buffer zone) | undefined | | ignoreMute | boolean | ignore mute | undefined |
Event
| property | type | description | | :-------------: | :-----------------------: | :------------------: | | ondataavailable | (pcm: Int16Array) => void | real-time audio data | | onpause | () => void | pause event | | onresume | () => void | resume event | | onstart | () => void | start event | | onstop | (pcm: Int16Array) => void | stop event | | pause | () => void | audio pause | | resume | () => void | audio resume | | start | () => void | audio start | | stop | () => void | audio stop |
Helper
| property | type | description | | :------: | :----------------------------------------------: | :-----------------------------------: | | pcmMerge | (pcms: Int16Array[]) => Int16Array | merge multiple pcm streams | | pcmToWav | (pcm: Int16Array, sampleRate: number) => Blob | convert PCM to WAV | | parseWav | (buffer: ArrayBuffer) => object | obtain information about the wav file | | isSpeak | (pcm: Int16Array, sampleRate: number) => boolean | check if there is any input of audio |
Example
simple example
import { Recorder } from 'recorder-client';
const recorder = new Recorder({
sampleRate: 16000,
chunkSize: 1900,
});
recorder.onstart = () => {};
recorder.onpause = () => {};
recorder.onresume = () => {};
recorder.onstop = (pcm) => {};
recorder.ondataavailable = (pcm) => {};
const onClick = () => {
recorder.pause();
recorder.resume();
recorder.start();
recorder.stop();
};pcmMerge
import { Recorder } from 'recorder-client';
const recorder = new Recorder({
sampleRate: 16000,
chunkSize: 1900,
});
const pcms: Int16Array[] = [];
recorder.ondataavailable = (pcm) => {
pcms.push(pcm);
};
const onMerge = () => {
const data = Recorder.pcmMerge(pcms);
};pcmToWav
import { Recorder } from 'recorder-client';
const recorder = new Recorder({
sampleRate: 16000,
chunkSize: 1900,
});
recorder.onstop = (pcm) => {
const blob = pcmToWav(pcm, 16000);
};parseWav
import { Recorder } from 'recorder-client';
interface Wav {
numChannels: number;
sampleRate: number;
byteRate: number;
fileSize: number;
audioFormat: number;
}
const getWav = async (file: File) => {
const buffer = await file.arrayBuffer();
const wav: Wav = Recorder.parseWav(buffer);
};isSpeak
import { Recorder } from 'recorder-client';
const recorder = new Recorder({
sampleRate: 16000,
chunkSize: 1900,
});
recorder.ondataavailable = (pcm) => {
const flag = Recorder.isSpeak(pcm, 16000);
};