BLOGブログ

2021.03.24UE4UE4/ Audio

[UE4]お手軽マイクレコーディングHowTo

執筆バージョン: Unreal Engine 4.26

Ue4で完結するマイクレコーディングの方法のご紹介です

マイクや録音関係に関しては既に他の方々が色々な情報を出していますが、今回はその組み合わせでゲーム中にマイク入力のみをWaveファイルとして保存し、さらに動的にUE内部で再生する手順などをざっくり書きたいと思います

マイクからの入力関係の既存記事
[UE4] UE 4.19 でアップデートされたボイスチャット機能について(ヒストリアブログ)

UE4でマイクやミキサーの音を取得する方法(のっぴの備忘録様)

録音関係の既存記事
UE4 4.20 ゲーム内の音声を録音する(UE4初心者が頑張ってるブログ-MozPaca様)

[UE4.20]録音機能について(Polaris1080様)

確認Ver(執筆Verと4.25は確認)なら特別な設定もいらず、とても簡単にマイク録音はできます。パッケージでの動作もバッチリ

うまく使えばDSで出ていた電子で微生物なゲームみたいなことや、他にもライン入力からDJっぽくに音を切り貼りしてエフェクトをかけたりビジュアライズしたりするソフトも作ったりできるかもしれませんね

ではサンプルを作ってみましょう


材料:
任意のBP 1個
SoundSubmix 1個
MediaPlayer 1個

1,まずは材料の各種アセットを作っておきましょう、サンプルで作るBPはPawnを親クラスにして入力を受け取れるようにします

MediaPlayerアセットを作る際にVideoTextureを作るかどうかのダイアログが出ますが、今回は音声再生のみで利用するのでチェックを付けず作って大丈夫です

2,作成したBPを開き、AudioCaptureComponentとMediaSoundComponentを追加する

3,AudioCaptureComponentのDetailesで先に用意したSoundSubmixを設定する

また、プレイを始めた時点で録音を受け付けるよう、AutoActivateをTureにしておきましょう

この時点でこのBPをレベルに配置すればプレイ時にマイク入力を自動的に取ってそのままゲーム音声に出力してくれます

4,SoundSubmixを開いて、OutputLevelを0に設定する
マイク入力をそのままゲームに出力するのであれば設定の必要はないですが、Wavファイルを再生する以外の時は出力してほしくないのでSoundSubmixの設定を変えます

これでゲーム内ではマイクの音が鳴らなくなりました

5,BPのComponentsに戻って、MediaPlayerComponentのDetailesで先に用意したMediaPlayerを設定する

これで基本的な設定回りは終了です。

6,BPのEventGraphに入り、適当なキーイベントからStartRecordingOutputとFinishRecordingOutputをつなぐ
今回はRキーを押している間は録音して、話したら保存されるように組みます

7,Recordingノードの各種Pinを設定する。
・Submix to RecordはStartもFinishもAudioCaptureComponentに設定したSoundSubmixを選択します
・Export Typeはもちろん通常のWaveフォーマットにしたいのでWav Fileにします
・Nameはそのままファイル名になるので任意の名前で、Pathは保存されるフォルダになります。今回はGetProjectSavedDirectoryをつないでプロジェクトのSavedフォルダに保存します

その他のピンの詳しい説明は冒頭で紹介したブログ様が詳しいのでそちらをご覧ください。

さて、ここまでで録音部分に関しては完成です。動的な音声再生が要らない場合は以下の手順は不要になります。簡単ですね!
また、そもそも音声再生を行わないのならMediaSoundComponent自体不要なので外してしまっても大丈夫です。

8,別のキーイベントを用意して、それが押されたらWavを読み込んで再生されるようにOpenFileをつなぐ
サンプルではPキーを押したらWabを読み込むようにします、MediaPlayerの設定がデフォルトのままなのでファイルを読み込み次第音声再生も行われます。
OpenFileはMediaPlayerObjectが持っているノードなので、MediaSoundComponentをBP上に配置して、GetMediaPlayerを経由して呼び出します

FilePathには録音の時に設定したフォルダとファイルを指定するようにします。今回の場合なら、GetProjectSavedDirectoryにファイル名をAppendするばOK(拡張子.wavも付けることをお忘れなく!)

これでPキーを押せば録音したWavが再生できるようになりました。が、このままだとOpenFileした後のWavファイルがロックされてしまう為、一度再生されるとゲームを終了するまで上書き録音ができなくなってしまいます

解消するためにはFinishRecordingOutputの手前でFileをクローズする処理を入れてください

これでゲーム中に自由にマイク入力を録音して再生できるようになりました。

今回作ったサンプルBPはレベルに配置してAuto Possess Playerを設定して入力を取れるようにすればRキーとPキーで録音再生ができます


というわけで、お手軽なマイク録音の作り方でした

AudioCaptureComponent・MediaSoundComponent共に、SourceEffectChainを使ってEffectをかけることもできるので色々試してみてください

もちろんエフェクトをかけた後の音声を録音に使っているSoundSubmixに送ればエフェクト付きでwavファイルを作れますよ

エフェクトに関しては過去の記事も参考にどうぞ
[UE4] Sound Submix を使って音にエフェクトをかける