デモを開く

PC環境のChrome/FireFoxのみ動作します。

Voice Changer for Video Chat

話し声を高くしたり低くしたり、リアルタイムで変化させながら、ビデオチャットをすることができます。

How to use

  1. デモページを開き、カメラの許可をしてください。
  2. 「Call user id...」に通話相手のidを入れCallのボタンを押すとチャットが始まります。
  3. Mic on/off のトグルをクリックして音声を有効にしてください。
  4. Pitchshiftのスライダーを動かすと話し声が高くなったり低なったりします。

Technical Point

ビデオチャットのバックエンドにはSkyWayを使用しています。SkyWayを使うことでWebRTCに必要なサーバを構築・運用することなく、手軽にビデオチャットが可能です。

MediaStreamsのオーディオトラックにcreateMediaStreamDestinationで作成したストリームをセットすることにより、任意のオーディオをストリームすることができます。

Voice Changerでピッチシフトをさせた音声でチャットするために、マイクのストリームのノードをScriptProcessorNodeに接続して処理してMediaStreamsのオーディをトラックに渡しています。

const vStream = canvas.captureStream(20);
const aStream = actx.createMediaStreamDestination().stream;

const [vTrack] = vStream.getVideoTracks();
const [aTrack] = aStream.getAudioTracks();

return new MediaStream([vTrack, aTrack]);

ピッチシフトとは音を高くしたり低くしたりする技術です。一般的には音声の再生速度を変えることで音の高さ(ピッチ)が変わります。例えば、再生速度を早く変更すると場合はピッチが高くなります。
カセットテープを送りしたりすると声が高くなる現象です。
マイクからの入力の場合には音声の再生速度を変えてしまうと、元の音声の長さが短くなってしまうため隙間ができてしまいます。これでは困るので、処理単位内で隙間が空いてしまった箇所に波形をクロスフェードで重ねます。こうすることによって、自然にピッチを変える処理が実現できます。

ピッチを低くするときも同じように、処理単位より長くなってはみ出してしまっている最後を重ねてクロスフェードして処理単位内に収めることで対応が可能です。

Contact

ARKitを用いたアプリ開発のご依頼・ご相談は下記フォームよりお問い合わせください。

(c) る株式会社