클라이언트 자바 스크립트에 마이크 녹음을 작성하고 서버로 전송 한 다음 실크로 변환하려고합니다. 나는 오디오이 설정서버에 쓸 때 마이크의 절반 속도 AudioContext
var speaker = new Speaker({
channels: 1,
bitDepth: 16,
sampleRate: 44000,
signed: true
});
를 사용하여 스피커 모듈을 사용하여 서버에서 재생하지만이 실크로 변환됩니다 때 절반의 속도를 소리가 있습니다. 나는 그것을 작성하지 않은 C 클래스를 사용하여 실크로의 변환이 pcm 파일로 좋게 느려지므로 느려지 게한다고 생각한다. 은 C 파일 내가 Int16array으로 서버에 코드를 작성하는 BinaryJS을 사용하고
#define FRAME_LENGTH_MS 20
#define SAMPLE_RATE_KHZ 16
#define SILK_BITRATE 14000
#define FRAME_SAMPLES (FRAME_LENGTH_MS * SAMPLE_RATE_KHZ)
이러한 설정이 있습니다.
여기 코드를 복사 하겠지만이 튜토리얼에서 거의 그대로 복사했습니다.
또한 내가 실크 코덱에있는 경우 정확히 비트 레이트, samplerate 어떻게 samplerate를 다운 샘플링하는 방법의 측면에서 audioContext에서 점점 메신저 무엇인지 알고 싶어요.
EDIT : I 않았다
을 (다소)상의 수정하여 절반 속도 해결 onaudioprocess 전 절반 샘플을 제거하여 INT16에 float32 변환 곳.
l = buffer.length;
point = Math.floor(l/2);
buf = new Int16Array(Math.floor(l/2));
for (var x = l; x > 0;) {
var average = (buffer[x] + buffer[x-1])/2;
buf[point] = Math.min(1, average)*0xFFFF;
point -= 1;
x -= 2;
}
return buf.buffer;
그러나 오디오 피치는 여전히 절반입니다.
은 내가 – dandavis
내가 숫자가 일치 할 필요가 동의 ... 당신의 숫자가 양쪽에 일치, 그래서 어쨌든 대역폭을 절약 할 수 보내기 전에 클라이언트에 낮은해야한다고 생각하지만, 난 당신을 믿지 않는다 audioContext를 사용하여 클라이언트 측에서 샘플 속도를 제어 할 수 있습니다. 나는 스스로 그것을 다운 샘플링 할 수 있을지도 모르지만 나는 그 기술을 소유하고 있는지 모른다. – Neablis