shiguredo
Published in

shiguredo

音声/映像処理ライブラリを準備中

オンライン会議に必須な仮想背景や背景ぼかし、雑音抑制といった仕組みを OSS ライブラリとして公開する準備をしています。

まとめ

  • 仮想背景や背景ぼかしライブラリを npm に@shiguredo/virtual-background として公開する
  • 雑音抑制ライブラリを npm に @shiguredo/noise-supression として公開する
  • ベンダーロックインは行わない
  • Apache License 2.0 で OSS として公開する

ライブラリの提供理由

仮想背景は Zoom に慣れきった一般ユーザにとって当たり前になっています。ただ技術的にはサクッと作ってサクッと提供、そしてメンテナンスしていくというわけにはいきません。

そして仮想背景自体がビジネスの中心にあるわけではないため、ライブラリを気軽に使えるならそれで済ませてしまいたいというのがあると思います。

その一般ユーザの当たり前を WebRTC を利用したビジネスを提供する側にも当たり前にしていきたいというのが目的です。

方針

基本方針は「巨人の肩にのり、自分たちではやれる範囲だけやる」です。時雨堂はミドルウェア製品を販売して利益を上げている会社なので、機械学習などに強いわけではありませんし、そこで利益を上げられるほどノウハウを持っているわけでもありません。

そのため、今回提供するライブラリも Google や Xiph.Org が公開している優秀なライブラリを気軽に使えるようにして提供するという方針です。チューニングの余地があれば、やれる範囲でやります。

仮想背景/背景ぼかし

もう説明不要の仮想背景と背景ぼかしですが、こちらは Google が公開している MediaPipe を利用します。

これをサクッと使えるようにするというものです。利用方法は以下のような感じです。

<script>
const assetsPath = "/path/to/assets/";
const options = {blurRadius: 15}; // 背景ぼかし

let processor;
navigator.mediaDevices.getUserMedia({video: true}).then((stream) => {
const track = stream.getVideoTracks()[0];
processor = new window.Shiguredo.VirtualBackgroundProcessor(track, assetsPath, options);

// 仮想背景処理開始
processor.startProcessing().then((processed_track) => {
// 処理後の`MediaStreamTrack`が得られたので、適当な処理を行う
...
});
});
...

// 処理を終了
processor.stopProcessing();
</script>

雑音抑制

WebRTC にデフォルトで用意されている機能とは別に RNNoise と呼ばれる雑音抑制ライブラリを Emscripten で WebAssembly 化したものを利用します。

こちらをブラウザからサクッと利用可能にします。利用法用は以下の通りです。

<script>
const assetsPath = "/path/to/assets/";

let processor;
navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {
const track = stream.getAudioTracks()[0];
processor = new window.Shiguredo.NoiseSuppressionProcessor(track, assetsPath);

// ノイズ低減処理開始
processor.startProcessing().then((processed_track) => {
// 処理後の`MediaStreamTrack`が得られたので、適当な処理を行う
...
});
});
...

// 処理を終了
processor.stopProcessing();
</script>

このライブラリは SIMD 対応やノイズ抑制用のモデルを変えたりなどいろいろやれることはありそうなので、今後少しずつですが改善していければと思っております。

今後

まずはこの二つのライブラリのソースコードを公開、npm でパッケージを提供、そして Sora の開発ツールである Sora DevTools に組み込む予定です。

将来的にはこの二つ以外の音声や映像を処理するライブラリを追加できればと思います。今のところは画質改善や美白機能、さらには iOS / Android でも利用できるようにするなども考えています。

まずは「誰もが簡単に使えるようにする」から始められればと思います。

--

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
V

V

Erlang/OTP / 時雨堂 / WebRTC / E2EE

More from Medium

Axelar there is the future of Cross Chain Solution

TRADOCAPS SEED SALE

Jacob Chansley and Jan 6, 2021: From the Capitol to Crypto

Equity Matters, But Mostly When It Comes To Breakups