難波鷹史のREADING STATION

難波鷹史のREADING STATION

難波鷹史が日々挑戦する朗読や修理に関しての思うことやうんちく、その他日常的なことをつづるウェブログです。
アメブロにあったもう一つのブログとSeesaaブログのものと合体しました。

前から、Windowsではなく、音がよいとされているLinuxにて録音システムを作りたいと思っていて、先ごろよいシステムができたので、記事にします。

LinuxOSには、デスクトップ環境が軽快で、シンプルなLXQTを使ったLubuntu(ルブンツ)とUbuntuStudio インストーラー、そして noise-suppression-for-voice を使います。Lubuntuのインストール方法や日本語化については公式サイト等をご覧ください。

 

・Lubuntuのインストール

公式サイトからイメージをダウンロードし、USBメモリー等に、起動メディアとして書き込み、

PCにインストールしてください。

Lubuntu 24.04はWaylandには対応していませんが、次のバージョンで対応するそうです。

・UnubtuStudio Installer をインストール

端末ターミナルを起動して、UbuntuStudio installer をインストールします。

 

 sudo apt update

 sudo apt install ubuntustudio-installer 

 

デスクトップかスタートメニュー等からUbuntuStudio installer アイコンを探し起動します。

グラフィック関連のソフトやオーディオ関連のソフトなど、選んでインストールできるようになっていますが、ここでは録音システムに特化した環境にしたいので、

  • linux-lowlatency
  • ubuntustudio-lowlatency-settings
  • ubuntustudio-audio

を最低限、選んでおきます。

 

Modify Installed Package Selection をクリックしてインストールします。

・noise-suppression-for-voiceをビルドする

ビルドに必要なツールをインストールしておきます。

  sudo apt install git

  sudo apt install cmake

  sudo apt install ninja-build

  sudo apt install g++

  sudo apt install pkg-config

  sudo apt install juce-tools

 

公式Githubサイトへアクセスしソースコードをダウンロードします。

 

グリーンの「CODE」と書かれたところをクリックし、httpsの項目を確認し文字列をコピー。

任意の場所でターミナルを開いて(ここではホームディレクトリー)に以下のコマンドでgitファイルをダウンロードします。

 

   git clone https://github.com/werman/noise-suppression-for-voice.git

 
ダウンロードしたgitのフォルダーに移動します。
 
   cd noise-suppression-for-voice.git
 
ビルドファイルの生成し。

  sudo cmake -Bbuild-x64 -H. -GNinja -DCMAKE_BUILD_TYPE=Release

ビルドファイルができたら、ビルド実行。

  sudo ninja -C build-x64

 

注意 システムが32ビットの場合は、ビルドのコマンドが変わります。公式ページをご覧ください。

 

 

生成されたプラグインファイルをシステムにディレクトリーを作ってからコピーします。

 

ディレクトリーを作成

sudo mkdir /usr/local/bin/linux-rnnoise

コピー実行 build-x64にあるbinの中身を作成したディレクトリーにコピーする

sudo cp -a /home/[ユーザー名]/noise-suppression-for-voice/build-x64/bin/* /usr/local/bin/linux-rnnoise

・Pipewire用のコンフィグファイルを作る

公式のページに書いてある通り行います。(文章も引用しています。)
 
ディレクトリーを作る

mkdir /home/[ユーザー名]/.config/pipewire/pipewire.conf.d

 

プラグイン用の設定をエディタで作成し設定を貼り付けます。

(エディタは好みのものを使ってください。例では vim を使っています)
vim  /home/[ユーザ名]/.config/pipewire/pipewire.conf.d/99-input-denoising.conf

 

貼り付ける設定

context.modules = [
{   name = libpipewire-module-filter-chain
    args = {
        node.description =  "Noise Canceling source"
        media.name =  "Noise Canceling source"
        filter.graph = {
            nodes = [
                {
                    type = ladspa
                    name = rnnoise
                    plugin = /path/to/librnnoise_ladspa.so
                    label = noise_suppressor_mono
                    control = {
                        "VAD Threshold (%)" = 50.0
                        "VAD Grace Period (ms)" = 200
                        "Retroactive VAD Grace (ms)" = 0
                    }
                }
            ]
        }
        capture.props = {
            node.name =  "capture.rnnoise_source"
            node.passive = true
            audio.rate = 48000
        }
        playback.props = {
            node.name =  "rnnoise_source"
            media.class = Audio/Source
            audio.rate = 48000
        }
    }
}
]

 

注意

pipewireがバージョン0.3.45未満の場合

以下の場所に設定を貼り付けます。

/usr/share/pipewire/pipewire.confを
/home/[ユーザー名]/.config/pipewire/pipewire.confにコピーし、以下の設定を既に存在する
context.modulesの場所に貼り付けます。

 


・設定の編集と確認
貼り付け後、/path/to/librnnoise_ladspa.so の部分をシステムにコピーしたプラグインの場所に書き換えます。
/path/to/librnnoise_ladspa.so → /usr/local/bin/linux-rnnoise/ladspa/librnnoise_ladspa.so

ステレオ出力が必要な場合は noise_suppressor_mono の部分を noise_suppressor_stereo に書き換えます。

実際には、声の収録はモノラルで問題ないのでそのままにします。ステレオにすると2倍のリソースを消費するので、たとえマイクがステレオを収音し出力するとしても意味がないということが公式に書かれていました。

 

・プラグインの初期パラメーターを設定します。

 "VAD Threshold (%)"= 50.0, しきい値 

 RNNOISEでは、入力された音が、音声か雑音かを確率で数値化します。しきい値を設定することで、出力するかしないかを設定します。公式では85%~95%で問題ないそうですが、演技や表現を伴った音声の場合、あまり数値が高すぎると、息遣いや呼吸音は聞こえなくなるかもしれません。僕はとりあえず初期値の50.0で使っています。


 "VAD Grace Period (ms)" = 200

 最後の音声検出後、出力を消さない期間を設定します。公式では単語や文の終わりが切り取られる場合に役立つとあります。実際のこの初期値200で運用すると、「○○だった。」と発話するとき、最後の「た」が消えることが頻繁にあります。しっかり発音すれば消えにくいですが、まぁ、よく消えますねぇ。400ぐらいでもいいかもしれません。

 

 "Retroactive VAD Grace (ms)" = 0

 VAD Grace Periodに似ていて、言葉の終わりでなく始まりに利いてくるようです。設定すると、遅延が発生するそうです。しゃべりはじめが聞こえなくなるんでしょうか。ここは初期値の0で問題ないでしょう。

 

設定が終わったら、保存してエディタを終了します。

 

・PipeWireの再起動をします。
 # systemctl restart --user pipewire.service

これで、音声録音ソフト等から音声ソースに「Noise Canceling source」を選択できるようになります。

(もしかしたら、入力マイクとプラグインをシステムのサウンド設定で関連付ける必要があったかもしれません…)
 
以上、録音のノイズを除去して声を収録するシステムの構築でした。
構築楽器の録音にはまったく向きませんが、朗読やナレーションの録音にはすこぶる威力を発揮します。
近所で家の建築をしていても、まったく雑音が乗りません。
 
最初、UbuntuStudio24.04で行いましたが、日本語入力が英語入力に戻るという不具合があったので、Lubuntu24.04を使用しUbuntuStudioInstallerをインストールすることにしました。
 
この24.04のUbuntuディストリビューションですが、カーネルバージョンによっては、HDMI出力の音声が出ないことがあります。カーネルをダウングレードするか、Ubuntuのバージョンを23.10にするかということになるかと思います。
 
それでは、次回の更新までごきげんよう。