クーの自由研究

かえるのクーが素朴な疑問を実験して報告します。

計算機音楽の自由研究(準備:その2.9.2)~機械学習用サウンドデータベースをつくる(実践編)

はじめに

機械学習用のサウンドデータベースについては、「音の機械学習」に興味のある方に使ってもらえるレベルのもの(汎用性がある。統計的にもそこそこ多い要素数といえる。)を目指そうと思っていました。考え方を改め、「汎用性のあるサウンドデータベース」をつくることをやめます

f:id:np2LKoo:20170525203856p:plain

「汎用性はなくていいから(ボク専用でいいから)とにかく手持ちのサウンドでてっとり早くデータベースをつくり、実験を開始する」ことにシフトします。(泣く泣く「格付けチェック遊び」はあきらめます)音質もあきらめます。(涙)

とはいえ、60000音で11時間ぶん以上の音を扱うことになるので、整理してまとめるだけでもかなり時間がかかると思われます。

(6月末まで反省キャンペーン中です。内容を順次リファインします。準備:その2.6から、準備:その2.9.2までのブログを順次内容更新します。その間内容的には「カオス」な感じになるとおもいますが、ご容赦ください。)

目標設定します(ボール妥協は友達!)

6月末まで、60000音程度の「音のデータベース」を作成することに集中する。

7月からそのデータベースを使って「音の機械学習」の自由研究実験をはじめる。「音楽の学習」を目標にしているが、いきなりはむりポなので、まずは「音」についての自由研究をする。

8月くらいに自由研究での扱いやすさ、扱いにくさをみてデータベースを調整し「そこそこのレベル」にまでする。(ただし手持ちの音なのでしょぼいです)テスト用のデータベースも準備する(10000音)

9月くらいにデータベースを固め、それ以降不満があっても変えない。どうしても不満があるときは別のものを1から作る。データベースの(しょぼいけど)完成版とアクセス用のPythonクラス等をどこかに公開する。(ソースはGitHUBですが、データベースはどこかのフリーのネットストレージサービスにすると思います。)

9月以降はデータベースのことは忘れ(使うだけに集中し)今年の「音の自由研究」に専念をする。(そしてここが本当のスタートラインです)

・そしてまたきっとが訪れる。冬になる前になんとか今年の成果を出したいです。

このページはすこし特殊になります。

ボクはブログは日記形式にではなく、情報ごとにまとめる感覚です。とはいえ、最近は経過も含めてこまかめに書いています。「(追記)」をかいたり、1つの話題を細切れの時間を使って2~3日程度で編集することもよくあります。

このページは「実践編」として、データベースが完成する予定の6月末まで順次更新していきます。(他に話題があれば書きますが、サウンドデータベースに関する作成はこのページに報告していきます。(どちらかといえば、公開するというより、ジブンにハッパをかける意図です)データベースの仕様についても微調整していきますが、データベースの仕様については、(準備:2.X)の内容を更新していきます。追記ではなく一部書き換えます。)

ブログの読者の皆様には誠に申し訳ございませんが、6月末までは確実に諸々停滞することになります。ご容赦ください。


めざせ60,000音!

現在 2,816音 / 60,000音 (4.7%)

蛙類滅亡6月末まで、あと31日。イスカンダルは遠い。


そもそもできるの?

・1日あたり(単音で)2000音の整備を目標にします。(30日で60,000音の計算!)4オクターブの楽器なら40種類を目途に毎日録音です。

・1200種類くらいの音が必要ですが、ピアノなどは音量(タッチ)によって音質がかなり違いますので、(サンプリング音源のレイヤー構造にもよりますが)1種類の楽器選択で4(pp, mp, mf, ff)種類くらい採取するように考えていますので、充分まかなえると思います。

SampleTank 2 XLだけで 1500音色以上あるので、数的問題はありません

XV-5080なんていう骨董品もあります。XV-5080はファクトリーパッチで1200種類以上あります。Roland CL32-L/Pという化石も発掘するかもです。(悲しいことにkontaktは持っていない。だれか持っていないかなぁ。)もちろん?Roland SC-55系もあります。

ほかにも、古いデジタルシンセ(実機:メーカ保守にだして25年モノの現役)などいろいろあります。。。KORGレガシーコレクションもあります。どの音を使うか決めるだけて一苦労。ソフトも含めてどれも10年以上前の古い「遺産・遺跡」です。どれも「溶け込む」タイプの主張が弱い音ばかりで、単音で聞くと本当に「しょぼい音」です。問題は「音の品質」と、まとめる「時間」(というよりは精神力)ということになります。(機材等は助手の協力にて)

5/25 機械学習用情報(タグにいれるやつ)のフォーマット調整

・汎用性を少なくする代わりに、よりシンプルにします。

データベース(仮)の音をPythonを使って鳴らしてみました。ノイズがあることと、クリップ(飽和)している感じがあるので、まだ調整中です。*1この調整が完了したら、怒涛の「音の録音」をしていきます。 

 5/26 反省キャンペーン始動

6月末までサウンドデータベース作成期間とし、不都合な点、考え直した点をフィードバックします。その場合サウンドデータベースの仕様定義も変更となるので、準備:2.6~2.9.2までの内容を見直します。(わかりにくくなるので、追記、変更の記載をせずに書き換えます。この間のブログ日付はあまり意味がなくなります)完成版の仕様をあらためてかけばいいのですが、断片の時間にボク自身、このブログをみて思い出しながら修正していきますので、(ブログ的には禁じ手な感じがしますが)遡り修正します。

5/27 録音の音圧をそろえます

録音時に波形のピークで音量を調整するのをやめて、平均音圧を目標値にするよう音量調整します。短い音なので、音の立ち上がりなどのフレーム分析はせず、全体(32768sample/0.68Sec)の平均音圧を求めます。RMS(実行値計算)という音圧計算方法で求めます。

powerAvarage = 10.0 * np.log10((regFrame ** 2).mean())

regFrame は-1.0から1.0までの値に正規化された値を入れます。(平均音圧を出したい部分の全サンプルです) 最初の数字が20.0ではなく、10.0であるところがポイントです。(Powerの場合は10です)単位はdB(デシベル)です。0を超えることのない、マイナスの数字となります。元にするサンプル音には、ff(フォルテシモ)、pp(ピアニシモ)などのサンプリングがあり、ff(フォルテシモ)、の場合は調整目標音圧を-17.0dBにする(例)などの調整をします。0dBに近くないよう、もう少しレベルをあげたいのですが、アタックが強いとピークが飽和するので、範囲(16bit最大)を超えるような調整は行いません。

5/27 その2 ノイズが乗りやすいので、単音差し替え可能に

効率を考え、一連の音の連結は一度にやっていましたが、後で単音を再連結できる(=ノイズのある単音を差し替えて結合)ようにします。

(1)単音で録音する。(1音32768サンプル)

(2)単音の連結をして楽器スケール音にまとめる。(たとえばピアノだと88音)

(3)楽器スケール音を連結してサウンドデータベースにまとめる。

5/28 ハードウェア音源は録音の調整が難しい

 ハードウェア音源は立ちあがりがとても鋭いものがあり、録音の状況によっては立ち上がりにクリップノイズが混じるように聞こえる場合がありました。立ち上がりのノイズを聞こえないように極微小の(Pythonで)フェードイン処理をし、音質に影響しない程度に立ち上がりを「ほんの少しだけ」なだらかにしました。(感覚的には立ち上がりの2~3の波の山をフェードインする感じです)また、昔のハード音源はS/N比が悪い、というかノイズレベルが高く、(ノイズに反応して)音の立ち上がりの自動検出がうまく効かなかったので、音開始の検出閾値をかなり高めに設定しました。

ハード音源はRoland系ばかりでにピアノなどの似たような音はあとで除外(もちろんかわりに別の音源を入れる)するかもしれません。ピアノだけで6万音の1割程度(70種で6160音)をデータベースに入れようと思っています。「バランス・バリエーション的に」YAMAHA系のサンプラーがほしくなってきました。生ピアノサンプリング音でもいいけど。。。データベースのため「だけ」に中古のMOTIF-RACK ESなどを入手するのは「なし」です。クラビノーバで代用します。

楽器の種類(カテゴリ)は全体で10種類くらいを考えています。でも、民族音楽系の楽器もいれたいのでバリエーションはそれより増えるかもしれません。

サウンドフォントは探せばまだフリーで高音質のピアノ音源はある「かも」しれません。不足したら探すことにします。

SC-55mk2の録音で問題発生!純正のACアダプタを使っていますが、おそらくはACアダプタ電源ハムノイズ(波形整形の低周波のリプル系ノイズ:大昔のACアダプタなので、スイッチング系ではないです。)が無視できないくらいにひどいです。もとからこんな感じなのか、アダプタの劣化なのはは不明です。禁断の電池駆動させるか安定化ACアダプタもしくはスイッチング電源*2に交換してみます(今は手持ちがです。ないので、保留)次のXV-5080に進みます。

XV-5080にあるデジタル(コアキシャル)接続で48kHz接続で録音しようとしていますが、うまくつながりません。せっかくデジタル接続できるはずなのですが苦戦中です(US-2x2はデジタル入力がないので、QUAD-CAPTUREで入力)今日はこれでおわりそうです。SCノイズ問題とXV-5080接続問題で今日は成果なしです。そもそもXV-5080の操作がわかりません。アナログではもちろんつながりますが、XV-5080でもSC-55ほどひどくはないですが、(ラインの)ノイズが載ります。気にするのか、気にしないのか思案中です。(デジタル接続に歯が立たなければ、気にしない方向です)

XV-5080の録音を開始

コアキシャル接続できました。つながらなかった原因は「つながっていなかったから」でした。(笑)実は今回の録音に関して、オーディオ配線がかなり絡まっていまして、コアキシャルの配線を取り違えていました。もともとボクの部屋は、音の接続は全般的にデジタルアンプを使っていることもあり、ほとんどがコアキシャルと光デジタルですが、配線がどの御宅でもそうだと思いますが、ひどいことになっています。今回の接続替えでオーディオ系と録音系が入り乱れてしまい、裏にまわした配線を取り違えてしまいました。かっこわるくてもしばらくは裏に回さず机の上を横切っての配線にします。*3

デジタル接続はさすがにノイズがありません。(非力な処理系でどれだけノイズがのるかです)

SC-55についてはローノイズ電源を買う(汎用ACアダプタをキットで作る)ことにしたので、後回しにします。このあたりは助手が得意そうなのでお願いしようと思います。電源ノイズのひどさにがくぜんとしたので、部屋にある音の出る系のACアダプタは全部置き換えます。

5/30 ピアノ(ピアニシモ)の音量に問題があったので再録音

現在ピアノ系を録音中ですが、通して聞くと似たような音ばかりで、案外バリエーションがなく、「音」の学習としておもしろみを出すために「Eピアノ」系と「ローズ」系「クラビ、ハープシコード」系なども若干「ピアノ系」の音として録音します。MNISTの数字も「これが4かぁ?」というようなとんでもない文字がたまに(結構)含まれているのがおもしろいので、「音」もバリエーションがほしくなりました。(似てても一流のピアノ音ばかりなら(そのなかで識別を学習できるので)、そちらのほうがおもしろいのですが。。。)

5/31 毎日録音してますが、進みぐあいが悪いです

前後の音が(リバーブなどの余韻で重ならないように)十分間をあけたり、レベルやエラーの問題で再録音したりして1種類の音(ピアノなら88音)を録音するのにかなり時間がかかっています。(15分程度、やりなおすと30分くらい)ハード音源の設定やリバーブのかかり具合を調整しながら録音しています。(リバーブなしとありとをばらつかせてバリエーションがあるようにしているなど。プリセットのいろいろな波形の複合音+エフェクトではなく、音源のもつ元のサンプルをできるだけそのまま録音しています。リバーブがないと寂しすぎるので、かけたりかけなかったり、学習を意図してばらつかせています。)もっと効率よく録音できる方法を考えます。

記事が長くなってきたので6月号につづく。

雑記

波形情報をそのまま持つと容量がすごいことになりますが、あえてそうしています。学習だけを考えるとフーリエ変換mfcc(メル周波数ケプストラム係数)変換の前処理をしたものを素材にする考えもありますが、その方法を特定したくない(いろいろやりたい)ので、wave波形そのものを学習素材にしようとしています。

音声認識もおもしろそう。。。

 

音楽プロモーションのほうのキャンペンは終了

めざせ20Hit!最後のあがき。

f:id:np2LKoo:20170601000756p:plain

「カール」キャンペーンに便乗:この曲は東日本では6月以降再生できなくなります!!

目標到達ならず!!19Hitにおわりました。世の中の厳しさを学びました。

5月末日をもって、当ブログの音楽プロモーションキャンペーンは終了しました。

視聴いただいたみなさま。どうも有難うございました。

 

 

 

 

*1:とても元の音がsteinway(のサンプリング)だとはおもえません。

*2:スイッチング電源(スイッチング動作のACアダプタ)+高価ですが、超高性能電源ノイズフィルタの組み合わせが気になります。いろんなサイトにレビューが載っていますが、本当にすごいらしいです。お金がないのでボクはコチラかな。

*3:MIDI系やHDMI系の既存の各種接続や電源配線も含めてすごいことになっています。HDMIは1階と2階を接続し、2階から1階の機器をリモコン操作できるようにいろいろ組みあわせています。HDMI延長は市販品でリモコン延長(中継器)は自作です。