🎤

JavaScriptでMediaStream Recording APIを使って音声を収録する方法【デモ+動画あり】

2022/04/19に公開

この記事について

この記事ではJavaScriptで MediaStream Recording API を利用して音声を収録する方法について紹介します。関連リソースを下記に示します。

https://www.youtube.com/watch?v=NL7jgSWerGU

おおまかな手順

おおまかな手順を下記に示します。

  1. コーディングの準備
  2. コーディング
  3. 動作確認

コーディングの準備

ターミナルで下記のコマンドを実行してコーディングの準備をします。

mkdir column-recorder-audio
cd column-recorder-audio
touch index.html
touch main.js

コーディング

index.html

エディタでindex.htmlを開いて下記の内容を入力します。

main.js

エディタでmain.jsを開いて下記の内容を入力します。

ポイントを下記に示します。

  1. マイクから音声を取り込むためのメディアストリームを取得します
  2. audio/webm形式での録音が可能かどうかを確認します。
  3. メディアレコーダーのインスタンスを作成します。
  4. メディアレコーダーのstartメソッドを呼び出して収録を開始します。
  5. メディアレコーダーのstopメソッドを呼び出して収録を停止します。
  6. メディアレコーダーのdataavailableイベントにイベントハンドラを追加して収録した音声データを取得します。

動作確認

下記のコマンドを実行するなどしてWebブラウザでindex.htmlを開きます。

open index.html

マイクへのアクセスの許可を求められるので「許可」ボタンをクリックします。

Webブラウザのアドレスバーの下に「このファイルが次の許可を求めています」「マイクを使用する」のメッセージに加え、ブロックボタンと許可ボタンが表示されています。

「許可」ボタンをクリックしてから「記録を開始する」ボタンをクリックすると音声の記録が開始します。

記録を開始するボタンをクリックした直後の様子です。記録を開始するボタンが無効になっており、記録を終了するボタンが有効になっています。

「記録を終了するボタン」ボタンをクリックすると音声の記録が終了します。

記録を終了するボタンをクリックした直後の様子です。記録を終了するボタンが無効になっており、記録を開始するボタンが有効になっています。

プレイヤーの再生ボタンをクリックすると記録した音声が再生されます。

プレイヤーの再生ボタンをクリックした直後の様子です。プレイヤーの再生ボタンが一時停止ボタンに変化しています。

おわりに

音声を記録するには Web Audio API を利用する方法もありますが、この記事で紹介したMediaStream Recordingを利用する方法よりもやや複雑です。Web Audio APIの使い方については JavaScriptでWeb Audio APIを使って音声を収録する方法の記事 で紹介していますので興味がありましたら併せてご覧いただければ幸いです。最後までお読みいただきありがとうございました!

GitHubで編集を提案

Discussion