johnsonaoki
@johnsonaoki

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

音声データの入力方法がわからない

解決したいこと

記事に書かれている(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

1Answer

ffmpegという便利な動画編集ソフトウェアがあります
コードに書かなくてもhzの変換もできるようです

0Like

Your answer might help someone💌