Unityで録音して、録音したサウンドを再生する最小実装
Unityでサウンドを録音して、また録音した音声を再生させた事がなかったので調査しました。
録音開始
MicrophoneクラスをStartすると録音状態となります。
// 10・・・録音最大秒数
// 44100・・・サンプリング周波数
_recordedClip = Microphone.Start("(録音機材名)", false, 10, 44100);
そして録音を終了する、または録音最大時間を越えると戻り値に録音済みのAudioClipが返却されます。使い方はとってもシンプルです。
録音する際は録音機材名の指定が必要です。上記のソースコードの中の"(録音機材名)"
の部分です。
録音機材名の取得
Microphone.devices
配列から録音機材名を取得できます。
foreach (string device in Microphone.devices)
{
// 録音機材名リストに保持
_micNames.Add(device);
}
録音の終了
Microphone.End("(録音機材名)");
ちなみに録音の終了は、Endメソッドに使用したデバイス名をセットします。
成果物
OnGUIで超シンプルなUIをデバッグ用として用意しています。
僕のMacはSoundfloowerをインストールしているので、マイクが複数あり、それに気づかず最初動作しなくて戸惑いました。
なぜこんな事をしているか?
経緯としては、子供がトランシーバーがほしいとせがんでくるため、家にあるものでそれっぽいものが作れないか今まさに模索している最中でございます。以下経緯Tweet。
子供がどうしてもトランシーバーが欲しいと言われて、なんとか家にあるもので同様のものが作れないか模索している、ポーリングでなんとか出来ないかな。。
— 大庭俊介@UXエンジニア (@ohbashunsuke) September 11, 2020
2台のスマホアプリで音声を直接やり取りする、またはサーバーに一旦保持させるなど、やり方は色々ありそうです。
どちらにしても声の録音が必要だったので備忘録として残しました。
Unityじゃなくても良いのだが..
そうです。Unityでやる必要は一切ありません。しかしiOS、Androidに両方ビルドできるメリット、僕が Unityに慣れているという点、納期が短い(明日子供が学校から返ってくるまで)という点から採用しています。
時間が許せば、最近気になっているFlutterで実装し直してみようと思います。
全ソースは以下にアップしています。
https://gist.github.com/baobao/4e5d1332e030828d141c492f93ea3c06
Author And Source
この問題について(Unityで録音して、録音したサウンドを再生する最小実装), 我々は、より多くの情報をここで見つけました https://qiita.com/ohbashunsuke/items/b3430e52574831afec92著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .