音声データの入力方法がわからない
解決したいこと
記事に書かれている(https://qiita.com/tomoyamachi/items/8ff30c3901faa97efb46)
コードの音声データはどのようにして入力するのかわかりません。
48KHzを16KHz(LINEAR16)で保存するためのコードです。
もしよろしければアドバイス頂けると幸いです。
記事の該当するソースコード
export const downsampleBuffer = (buffer, sampleRate, outSampleRate) => {
if (outSampleRate > sampleRate) {
console.error('downsampling rate show be smaller than original sample rate');
}
const sampleRateRatio = sampleRate / outSampleRate;
const newLength = Math.round(buffer.length / sampleRateRatio);
const result = new Int16Array(newLength);
let offsetResult = 0;
let offsetBuffer = 0;
// bpsを縮める処理 (n byte分のデータを合算して、n byteで割る)
while (offsetResult < result.length) {
const nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);
// 次のoffsetまでの合計を保存
let accum = 0;
let count = 0;
for (let i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i += 1) {
accum += buffer[i];
count += 1;
}
// 16進数で保存 (LINEAR16でストリーミングするため)
result[offsetResult] = Math.min(1, accum / count) * 0x7FFF;
offsetResult += 1;
offsetBuffer = nextOffsetBuffer;
}
return result.buffer;
};
自分で試したこと
もともとはweb audio apiを使おうとしていたので以下のコードで音声データを収得していました。
<a id="download">Download
<audio src="test.mp3"></audio>
<script>
//
const audioContext = new AudioContext();
// get the audio element
const audioElement = document.querySelector("audio");
// pass it into the audio context
const track = audioContext.createMediaElementSource(audioElement);
</script>
参考にしたurl
https://qiita.com/tomoyamachi/items/8ff30c3901faa97efb46
https://developer.mozilla.org/ja/docs/Web/API/Web_Audio_API/Using_Web_Audio_API
0