我正在使用以下方法播放包含 wav 数据的字节数组。正在从 GWT 项目调用该函数。
此功能播放声音,但听起来像是某种地狱般的怪物。采样率绝对正确(声音是由 neospeech 生成的),我尝试了 numberOfSamples 的各种值,这似乎代表了音频数据的长度。
numberOfSamples 的值大于 30000 将播放音频文件的完整长度,但会出现乱码和可怕的问题。
那么,我做错了什么?
function playByteArray(byteArray, numberOfSamples) {
sampleRate = 8000;
if (!window.AudioContext) {
if (!window.webkitAudioContext) {
alert("Your browser does not support any AudioContext and cannot play back this audio.");
return;
}
window.AudioContext = window.webkitAudioContext;
}
var audioContext = new AudioContext();
var buffer = audioContext.createBuffer(1, numberOfSamples, sampleRate);
var buf = buffer.getChannelData(0);
for (i = 0; i < byteArray.length; ++i) {
buf[i] = byteArray[i];
}
var source = audioContext.createBufferSource();
source.buffer = buffer;
source.connect(audioContext.destination);
source.start(0);
}