クーの自由研究

7月は1周年祭。ボクと一緒に螺旋階段を頂上まで登ってみませんか?

計算機音楽の自由研究(準備:その1)~実験のデザインをします

神様でも冷やし中華でもなく自由研究はじめました

今年の自由研究は冬眠後忘れた言葉や記憶を思い出すための準備期間としてなかなか始動していませんでした。寒さが薄れるにつれ、ようやく体調も安定してきましたので、ことしも自由研究を始動します。
Pythonに至ってはすっかり忘れてしまったので、ゼロから再入門です。
筆も遅く、マイペースなのでたまの更新ですが、近くにお寄りの際はぜひお越しください。
今年は「計算機音楽」やります。

f:id:np2LKoo:20170415202937p:plain

そして「打倒、電卓音楽!」(検索のライバル)

なぜやるのか

視覚、聴覚、触覚、味覚、嗅覚が五感と言われています。*1
また、いわゆる五感の他にも第六感がよくいわれますが、乱暴に分けると
・五感の統合や高度な「心」の応答により物事の本質理解や予測を行うもの と
・第六感の「センサー」自体が体に備わり、外界と通信できる(チャンネルはたくさんあるが、同調(チューニング)しないとつながらない)
の2種類あると感じています。
UFO、オカルト大好きのボクは両方とも「あり」と信じています。
話がそれましたが(第六感はさておき)、脳ではこれらの情報を各種「ニューロン」の「組み合わせ」によって情報処理しています*2
「計算機音楽」の自由研究では、サウンドや音の解析と再構成をほぼ同時に行っていくことになると思っています。
コアな処理部分は「自己符号化器」を使いますが、時系列情報として扱うことが必要になるので、接続をフィードバックさせたくなると思います。ピュアな(フィードフォワード型の)「自己符号化器」でなくなったり、「リカレントニューラルネットワーク(RNN)」や「自己組織化マップ(SOM)」に浮気するかもしれません。あらかじめご了承ください。

本自由研究では聴覚の学習をモデル化して研究します。

入り口は「耳」
本サイトは医学的な「神経科学」にもかなりの興味があることから、ごちゃまぜ(よく言えば「ハイブリッド」)な状況となっております。
今後とも体に対する医学的な理解も重視してアプローチしていきます

耳に関することは「こちら」が詳しいので参照ください。

 

f:id:np2LKoo:20170415211006p:plain

f:id:np2LKoo:20170416184046p:plain 

f:id:np2LKoo:20170416184202p:plain

 

有毛細胞」がどんなものか、のイメージを持てていただければと思います。

出口を「声」とした場合
楽器演奏を出力(たとえばMIDI情報出力など)としてもよいと思いますが、当面は単純なサイン波の重ね合わせ(フーリエ変換)になります。

もっと進めば、出力を「声」を計算合成(モデリング)するモジュールにつなげて学習していけたらと思います。

時系列をどう扱うか

「動画」はもちろん時系列です。
「静止画」はある瞬間の映像で、その静止画だけでみると時系列要素はありません。
ところが、「サウンド」は情報自体が時系列であることから逃れられません。一瞬の音を切り取り、それを継続して鳴らしたところで、元の音とは全く別ものになってしまいます。

サウンドは時間とともに周波数(の重ね合わせ)、振幅、位相が変化することにより「サウンド」としての情報が成り立ちます。
残念ながら「自己符号化器」は時系列には適さないといわれています。
そこで、時系列情報を含んだ情報をまとめて1つの情報として扱います。例えば(なんのことはない)よく見る横軸が時間のグラフそのものを扱うような感じです。

f:id:np2LKoo:20160922024411j:plain

よく見る「スペクトログラム」のグラフそのものに変換して処理することでもいい気がします。このグラフは「周波数、振幅、時間」はありますが、「位相」情報がありません。「位相」は音の分析と再構成にはとても大切な情報なので、将来的にはこれを含めた情報として扱っていくように考えます。

 実験用標準フォーマットの公安9課考案

 学習で使用するスペクトログラムの標準フォーマットを考えたいと思います。(当サイト実験でのみの統一フォーマット)

実験用の標準フォーマットを仮に考えてみます.

ピアノの音を例にとって波形をみてみましょう。題材/素材は「Keppy's Steinway Piano」です。
Keppy様(KaleidonKep99)のフリーのサウンドフォント(SF)としてチョー有名ですが、説明に使わせて頂きます。ちなみにKeppy様はイタリアでBlack MIDI Teamの方です。*3

さっきコメントを書いたら早速返事をもらいました。嬉しいです。

f:id:np2LKoo:20170415225637p:plain

本題がないので横道にそれてばかりですが、波形確認によく使うソフトは「Audacity」と「SoundEngine Free」です。
どちらも好きなのでその時の気分により使うのを変えることがあります。サンプリングドット単位の細かな操作をしたいのであればAudacityのほうがやりやすいです。
今回はSoundEngine Freeで読んでみました。

f:id:np2LKoo:20170415220549p:plain

C1(Note:24)32.7Hz

ピアノのいちばん低いドの音

立ち上がりが鋭く倍音が多い

ピアノなのでとても鋭い立ち上がりです。実験の題材にする素材は(マシンスペックの関連で)できるだけシンプルで短い必要があるので、短く切って加工することにします。

 元のサンプリングは27秒なのですが、15秒分だけ貼ってみます。ちなみにステレオです。音量には注意ください。

テスト入力サンプルフォーマット

 いろいろやってみた結果以下のフォーマットにします。

よくあるCDフォーマットの16Bit44.1KHzモノラルで2^14=16,384sample=だいたい0.372秒とします。48KHzのソースの場合は16,384sampleでだいたい0.341秒です。
16,000サンプルまでを評価に使い、後の384サンプルは減衰させます。(急に音を止めると聞くときクリッピングノイズが聞こえ、耳が痛いためです。)さらに384サンプルの末尾16サンプルは無音とします。 

下の例は48KHzなので、0.341秒です。(モノラルwavファイル:32970Byte)

耳の入り口はこの情報です。

スペクトログラムのフォーマット (仮)

 周波数(Frequency):12半音で一オクターブを区切り、G#0:25.957Hz(MidiNote:20)からG9:12543.85Hz(MidiNote:127)の108つのSin波周波数区分(9オクターブ)の周波数クラスを考えます。(FRQ0~FRQ108)
各周波数クラスに対し、
  強さ(Amplitude):最低128段階で近似します
  位相(Phase):360°を最低128等分して近似します。(今回はリザーブとし、使用しません)
音は立ち上がりがとても重要なので、立ち上がりの解析を細かくします。
2048サンプル、4096サンプルまで、8192サンプルまで、16000サンプルまでで、それぞれ2点ずつ、計8点で周波数を時系列測定します。
以上より、サウンドサンプル1音を108×8=864のパラメータ情報で表します。*4
さすがに時系列8点は少ないとは思いますが、ボクのプァスペックなパソコンではこのあたりが妥当と考えます。

神経/自己符号化器への入力はこの情報になります。

耳の器官(人類の場合は蝸牛(かたつむりみたいなぐるぐる部分))で物理的にフーリエ変換されますので、神経の入力はこのスペクトログラム自体がフォーマットになります。サンプルサウンドからこのスペクトログラムへの変換が「前処理」になります。

学習用サウンドカテゴリ番号の素案

学習の判断を円滑にするためにサウンド要素にカテゴリ番号を持たせます。

[サウンドカテゴリ番号、サブカテゴリ番号、サウンドカテゴリ内の識別番号、ノート番号、コメント欄]を持つものとします。
たとえば、図書館ライブラリ的な統一管理番号を考えます。蛙界にサウンド研究用標準フォーマット普及させるつもりです。


 楽器系(楽音)


1 GM MIDIサウンド (/サブカテゴリ番号はGM2番号 / 識別番号は楽器IDなど)
2 PIANO (:以下14まで実音サンプリング/メーカによる分類/製品種別のID)
3 ORGAN
4 Guitor(リュート系含む)
5 Base
6 Drums/Percussion(太鼓、シンバル系、マラカス)
7 String系 (1億円のバイオリンと10万円のバイオリンの聞き比べ:格付けチェック遊びをしたい)
8 ブラス系
9 リード系(ハーモニカ含む)
10 ウィンド・笛系
11 Percussion(音階系打楽器/ビブラフォン、スチールドラム、チューブラベル)
12 民族音楽楽器(シタール、タブラはこちら)、その他楽器(ハープ系や琴はこちら)
13 シンセサイザ(数理計算波形含む)
14 楽器複合音(音楽のフレーズ/断片/音楽にならない不協和音含む)
15 コラージュ構成作品、環境向けアンビエント(シンセサイザ含む)
16 音楽曲(古典、ポピュラー)
17 音楽曲(自動作曲:ENIAC組曲、計算機音楽はこちら)
18 音楽曲(現代音楽)


人系


21 男性歌声(音楽解析向け)
22 女性歌声(音楽解析向け)
23 男性話声(言語解析向け)
24 女性話声(言語解析向け)
25 男性音声(心理解析向け)
26 女性音声(心理解析向け)
27 医療系人体音(病理解析)


生物系


41 動物の鳴き声(マルチモーダル情報統合研究用)
42 動物の鳴き声(動物コミュニケーション研究用)


自然系(非生物系)


61 自然界純音(単発系:水滴の音はこちら)
62 自然界純音(持続系:雨の音、波の音はこちら)
63 自然界雑音
64 自然界騒音(嵐の音はこちら)


生活系


81 生活純音(単発系:特定の動作の音、風鈴などの非楽器)
82 生活純音(持続系)
83 生活補助/道具系(自発的に音を発する個人所有レベルの機器類:車、バイクはこちら)
84 生活騒音(交通機関、工事などはこちら)
85 生活雑音


工業系


101 生産設備(異常検出など)
102 生産機器(騒音低減研究用途)


分類法別(特殊用途)


121 国際十進分類法(図書分類準拠)
122 日本十進分類法(図書分類準拠)

0 まったくもって分類不能な音


なお、各カテゴリで未分類のものはゼロの識別を使用します。
自由研究の過程で少し調整するかもしれません。
サウンドサンプルに上記のようなラベル付けをして学習させます。

サウンドの出力について

 サウンドの出力は、入力とは別のしくみで行うものが、「学習」を実験するにあたっては興味深いです。
音であれば「発声」か「演奏」がいいのですが、どちらも敷居が高いです。
最初はてっとり早く、フーリエ逆変換とサイン波合成でサウンドを再現させてみます。

画像学習で有名な(そして昨年お世話になった)MNIST は Modified National Institute of Standards and Technologyの略だそうです。アメリカの工業規格をモジっているのですね。

「計算機音楽」の自由研究のサブタイトルとして、自己符号化器を用いてサウンドを学習する本自由研究にも「愛称」がほしくなりました。思い付きですが、K'SSSR(Koo's Sound Science Summer Reserche)にします。*5

再現されたスペクトログラムを元にフーリエ逆変換して、音波にするのが出力です。

人類の声帯はきわめて制約の大きい発音装置ですが、ここでは理想的な発音装置(万能正弦波合成装置)が発声するとして処理します。

まとめ

 サウンドの自由研究をします。愛称は「K'SSSR」です。
「K'SSSR」標準フォーマットを決め、実験します。
まずはピアノの音再現で実験します。
MNIST向けの「自己符号化器」を「K'SSSR」向けに修正します。
ピアノ以外の音でも実験をします。

展望とか希望(野望?)

 学習済の複数のニューロンセット(ユニット)を使って、ニューロン圧縮、抽象・一般化のテストをしたいです。 

最近何をたべてもおいしい!

 コンビニやスーパのレトルト食品がたまらないくおいしい。最近作り手の情熱が伝わるような商品が増えてきている感じがします。
今日の殿堂入りは濃厚イタリアンな「青の洞窟PREMIUM 熟成ベーコンのカルボナーラ マスカルポーネチーズソースと共に | 日清フーズ」です。
チーズソースがいい感じに溶け合い絶品のおいしさでした。
Koo'sキッチン殿堂入りおめでとうございます。

 

*1:細かく分類すると体に備わっているセンサーの種類だけ感覚の種類があります。
たとえば皮膚だけでも、触覚の細分種類として痛覚、温度覚(直接触ってのもの、赤外線を感じるもの)、圧覚、振動覚、複数の触覚や情報処理を組み合わせた識別(位置覚、立体識別能力、物性識別能力(気体、液体、個体)、etc
皮膚の構成要素として、触覚のセンサーの応答性順応性に種類があり、体の表面における分布も積極的に調整されてきています。

*2:。「組み合わせ」のしくみについては、目下全世界の研究者が目を血走らせて研究いますが、なかなかわかってこないくらい複雑なのだとおもっています。ニューロン(の組み合わせ)は「汎用」ですから画像で各種情報処理を行えるなら、サウンドや音楽、音声でももちろん問題ありません。センサー(感覚器官)のつなぎ方(エンコード用の接続)、応答のつなぎ方(デコード用の接続)が違うので注意が必要だと思っています。サウンド関連は画像処理よりも断然一般情報が少なく、実験したり、英語の論文を検索したりしなければなりません。
英語は日本語以上にわからないため、かなり努力するつもりです。

*3:Black MIDIとは縦スクロールのピアノロールを縦横無尽のキャンバスに見たて、人間には演奏不可能な音符ピアノロールで絵をかいていきます。中には1曲の中に数万~数十万のオーダで音を入れます。
だいたい[Synthesia] というMIDI Playerソフトが使われるようです。これもまた一つの芸術。

*4:MNISTの入力が28×28=784なので、それほどオーダを増やさない程度の情報量に絞りました。
MNISTの画像学習が目の「網膜細胞」から「視覚野」の学習に相当するのに対し、音の学習は耳の「有毛細胞」から「聴覚野」の学習に相当します。
MNISTが784個の網膜細胞からの学習に相当し、サウンド学習(K'SSSR)は108個の有毛細胞からの8点時系列情報の学習になります。

*5:研究が崩壊(SSSRで検索!)するかもしれないことを暗示します。ちなみにボクはピロシキ好きです。不評なら変えます