@shiguredo/noise-suppression
TypeScript icon, indicating that this package has built-in type declarations

2022.4.2 • Public • Published

@shiguredo/noise-suppression

npm version License

JavaScript/TypeScriptでノイズ抑制機能を実現するためのライブラリです。

雑音を抑制して、人の音声を聞き取りやすくすることができます。

なお、ノイズ抑制部分には shiguredo/rnnoise-wasm を使用しています。

使い方

ブラウザから利用する場合

まずは script タグで JavaScript ファイルを読み込みます:

<script src="https://cdn.jsdelivr.net/npm/@shiguredo/noise-suppression@latest/dist/noise_suppression.js"></script>

ノイズ抑制を行うコードは、以下のようになります:

<script>
    // wasm ファイルの配置先
    const assetsPath = "https://cdn.jsdelivr.net/npm/@shiguredo/noise-suppression@latest/dist";
    const processor = new Shiguredo.NoiseSuppressionProcessor(assetsPath);

    // RNNoiseの推奨設定
    const constraints = {
        sampleRate: {ideal: 48000},
        sampleSize: {ideal: 480},
        channelCount: {exact: 1}
    }

    navigator.mediaDevices.getUserMedia({audio: constraints}).then((stream) => {
        const track = stream.getAudioTracks()[0];

        // ノイズ抑制処理開始
        processor.startProcessing(track).then((processed_track) => {
            const audioElement = document.getElementById("outputAudio"); // 音声の出力先を取得
            audioElement.srcObject = new MediaStream([processed_track]);
        });
    });
    ...

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

実際の動作はデモページソースコード)で確認できます。

JavaScript/TypeScript から利用する場合

以下のコマンドでパッケージがインストールできます:

$ npm install --save @shiguredo/noise-suppression

TypeScript での使用方法は次のようになります:

import { NoiseSuppressionProcessor } from "@shiguredo/noise-suppression";

const assetsPath = "https://cdn.jsdelivr.net/npm/@shiguredo/noise-suppression@latest/dist";
const processor = new NoiseSuppressionProcessor(assetsPath);
const processed_audio_track = await processor.startProcessing(original_audio_track);

...

processor.stopProcessing();

サポートブラウザ

本ライブラリは MediaStreamTrack Insertable Streams (aka Breakout Box) というブラウザの機能を利用しています。 そのため2022年1月現在では、ChromeやEdge等のChromiumベースのブラウザでのみ動作します。

ライセンス

Apache License 2.0

Copyright 2022-2022, Takeru Ohta (Original Author)
Copyright 2022-2022, Shiguredo Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

npm パッケージに同梱されている以下のファイルのライセンスについては rnnoise/COPYING を参照してください:

- rnnoise.wasm
- rnnoise-simd.wasm

Readme

Keywords

Package Sidebar

Install

npm i @shiguredo/noise-suppression

Weekly Downloads

76

Version

2022.4.2

License

Apache-2.0

Unpacked Size

554 kB

Total Files

7

Last publish

Collaborators

  • tnamao
  • miosakuma
  • melpon
  • takeruohta
  • voluntas