Tôi nhận được mẫu PCM 16 bit xen kẽ trên dây. Mỗi mẫu được kýPCM Web Audio Api Javascript - Tôi đang bị méo âm thanh
Tôi đọc nó dưới dạng mảng Int16bit, cho phép gọi ALL_DATA này. Vì vậy, mỗi mục trong mảng là một mẫu 16 bit.
Vì nó được đan xen, tôi trích xuất nó thành 2 kênh R-L-R-L Tôi kết thúc với 2 (16 bit) mảng một nửa kích thước của mảng ALL_DATA.
Sau đó, tôi đi qua từng mẫu và bình thường hóa nó thành Float32Array vì đó là những gì sử dụng API âm thanh web .
var normalizedSample = (sample> 0)? mẫu/32768: mẫu/-32768;
Đây có phải là cách phù hợp để thực hiện điều đó không.
Tôi đang bị âm thanh bị méo. Bạn có thể nói những gì đang xảy ra. Vì vậy, theo nghĩa đen nếu bạn đang nghe guitar cổ điển có vẻ như nó là điện với sự biến dạng.
Đối với luận cứ vì tôi đặt xuống mã ví dụ nhưng Mã này xử lý
MONO SOUND để làm ví dụ đơn giản, vì vậy chúng tôi không cần phải xen vào giưa nó cũng
var startTime = 0;
var fileReader = new FileReader();
fileReader.onload = function (e) {
var data = new DataView(e.target.result);
var audio = new Int16Array(data.byteLength/Int16Array.BYTES_PER_ELEMENT);
var len = audio.length;
for (var jj = 0; jj < len; ++jj) {
audio[jj] = data.getInt16(jj * Int16Array.BYTES_PER_ELEMENT, true);
}
var right = new Float32Array(audio.length);
var channleCounter = 0;
for (var i = 0; i < audio.length;) {
var normalizedRight = (audio[i] > 0) ? audio[i]/32768 : audio[i]/-32768;
i = i + 1;
right[channleCounter] = normalizedRight;
channleCounter++;
}
var source = audioContext.createBufferSource();
var audioBuffer = audioContext.createBuffer(1, right.length, 44100);
audioBuffer.getChannelData(0).set(right);
source.buffer = audioBuffer;
source.connect(audioContext.destination);
source.noteOn(startTime);
startTime += audioBuffer.duration;
};
Mọi góp ý có thể gây ra âm thanh bị méo sẽ giúp ích. Tôi đã viết dữ liệu pcm trước khi tôi gửi nó ở phía máy chủ đến một tập tin là tốt và âm thanh là hoàn hảo.
Bài đăng của bạn cuối cùng đã làm cho tôi có được âm thanh làm việc ... Cảm ơn một tấn cho đăng những nỗ lực của bạn, nó làm cho âm thanh của tôi gần tinh thể rõ ràng bây giờ :) – ole
Ở đây bạn nói rằng bạn đã sử dụng âm thanh để làm cho nó MONO đơn giản. Tôi đang cố gắng làm điều đó với âm thanh Stereo. Bạn có biết làm thế nào để làm điều đó? –