shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

memo : SilentVoice: Unnoticeable Voice Input by Ingressive Speech

2018年10月ごろの話題 のメモ


SilentVoice: Unnoticeable Voice Input by Ingressive Speech
〜 息を吸いながら発話 小さい音量での発話でも音声認識できる

https://www.microsoft.com/en-us/research/uploads/prod/2018/10/UIST2018_SilentVoice_cameraready.pdf

 

日本語の紹介記事

音声認識のために発話方法までも発想するとは、清々しい!

 

 

Simutrans 2018年の取り組み - Squirrel AI Player 編

本記事は、Simutrans Advent Calendar 2018 〜 12/6 リス です 

Simutrans っていう、最高なフリーでオープンソースな交通シミュレーション
それについての、2018年の私のたぶん独自な取り組みについて書きます
Part 1 として、リス!

 

[ リス?!]

Simutrans には、なんと AI Player がついています。しかも2種類も。
そのうちの1種類は、Squirrel なる謎の言語で自作できるらしいです。

Squirrel は英語で リス だそうです。
そう、つまりこの記事の趣旨は、「Squirrel AI Player を作り始めてみた」 です。

Squirrel は ... なんか ... そう ... プログラミング言語です。
ボーカロイドスクリプトLua のお友達みたいです。
よくわからないけど、なんとなくニュアンスで?
C言語も覚束ないのに、必要に応じてC++JavaScriptPythonもいじる〜
のノリでできます。できました。・ワ・

 

ご安心ください。作らなくても、Simutrans に同封されています。

[使ってみる]

ここをこうして

f:id:shingoushori:20181206004359j:plain

こんな画面が出てくるので、選べば出来上がりです。
私はちょっと作ってみたので色々ありますが、本体についてくるのは "sqai" だけです。

f:id:shingoushori:20181206004403j:plain

新規マップで走らせてみると、
こんな感じで産業施設に群がった路線をいきなり作ります。
割と高確率でそのまま破産します。
乗車率100%になるまで動かないバスで詰まるバス停を幹線道路に作りまくります。
挙げ句の果てに、破産時に道路が接収されたついでに元からある幹線道路の交差部分を巻き込み削除させます。AI、まじでやばい。シンギュラリティ感じる。

f:id:shingoushori:20181206005022j:plain

そういえば、このブログ内では ↓ こんな記事をすでに書いていました。
乗車率100%になるまで動かないバス路線を作らせているのは、AI のスクリプトな訳です。だから、そういう設定を弄ってしまえばいいんです。
運行頻度が上がるので、もちろん倒産します。

 

[リファレンス]
英語です。ぶっちゃけわかりにくい。なんか足りないような気がします。
Simutrans-Squirrel-API: Main Page
そしておそらく Simutrans の GUIでできる全ての操作が API 化されていないのでは?
その辺り、AI Playerでできることも増やしていきたいところ。

 

[余談]
Simutrans本体についているAI Playerだと、"AI 旅客" がオススメです。

こんな感じで、いい感じに各街にバス網を作りつつ、隣町に順々に伸ばしていきます。
そして ... 倒産していますね ... なんてこった。

f:id:shingoushori:20181206011718j:plain

 

[いざ、自作]

... (GitHub の使い方に悩んだりしているため、省略) ...

とりあえず、こんな感じで すぐには破産しないバス網を作る AI Playerが組めてます

f:id:shingoushori:20181206020746j:plain
↓ ちなみに、AI Player 自作の経過を YouTube のプレイリストにまとめてます

[Simutrans] expr : Squirrel AI Player - YouTube

[余談]
マップ最初期のバス路線網の今のところのオススメは次のようなものです
AI Player で検討して赤字で倒産させまくって到達した現在の見解です
・できるだけ直線コースになる既設道路を使った経路 かつ できるだけ遠いところ
を選んで路線を組む
・乗り換え需要に期待し、隣り合う街を遠い街で乗り換えさせる
・それなりに新車が出ても遅くてペネルティが課せられにくいスペックのバスを選ぶ

 

[まとめ]

Simutrans の AI Player は、すぐ倒産してかわいい。

 

[余興]

えーっと ... リス! ... 井の頭自然文化園 の リスの小径 です。
市内建築の公園、博物館、文化施設、謎施設 ... 税金の無駄遣い ... 曰く付き物件 ...
が増えるといいですね。街が大きくなった時の駅名候補も増えるので。

なんと、ストリートビューがありました。

www.google.co.jp

 

memo : DKA法

代数方程式の解を、
"Aberthの初期値を用い,DK式を反復計算することで, rf_dka.eq1.gif個の根を得る方法をDKA(Durand-Kerner-Aberth)法と呼ぶ.(引用 : DKA法 - PukiWiki for PBCG Lab)"

複素数を考慮するのがポイント

 

DKA法 - PukiWiki for PBCG Lab

qiita.com

エクセルで操る!デュラン・ケルナー・アバース法(DKA法)による高次代数方程式の解計算

 

Durand-Kerner法によるARモデルから極表現への変換 ...

 

https://www.jstage.jst.go.jp/article/sicetr1965/34/6/34_6_607/_pdf/-char/ja

 

 

www.jstage.jst.go.jp

"midiglue" - Programmable MIDI/CV Controller & Effects Unit

"midiglue" - Programmable MIDI/CV Controller & Effects Unit

www.kickstarter.com

... のバッカー?になりました

midi信号をプログラマブルエフェクターしちゃうもの?です

デモではアルペジエイターです 発想しないとですね

 

ところでMIDI規格は、なんとこれから大幅アップデートが行われるらしいです

RA: ニュース: MIDIの”大幅アップデート”に向け、Ableton、Native InstrumentsらがMIDI規格団体に加入

となると、このようにMIDIを応用しようという道具の登場が嬉しい

 

個人的趣味としては、
右上のエフェクターが BOSS FZ-3 っぽいところにグッときました
BOSSのFuzzだとFZ-5のみが現行商品 つまみの数はFZ-3と同じなものの、左下の COSM のロゴがあります この画像だとそれがないので、FZ-3じゃないかな!

↓ ここのページの画像が比較しやすいと思う
BOSSのファズ3種 | さすらいのギター日記

なんか好きなんですよ FZ-3 が

memo : JavaScript x Python ... iPython Notebook -> GitHub Gist

とりあえず、メモ

Python のコードを JavaScript で実行したいんだが、という調べ物
手軽にWebアプリ化できるといいのだが

Brython ... Pythonコマンドプロンプトを作っちゃう?
その実行ファイルの大きさとアクセスの負荷が心配
とりあえず Brython 本家のものが公開されていそうだが、使いまくるのは気がひける

www.brython.info

 

"nbconvertでhtmlファイルに変換する" というのが主
そのままWebアプリ化できるわけではない

qiita.com

futurismo.biz

 

とはいえ、最近の雰囲気としては iPython Notebook -> GitHub Gist ? が、良さそう
Webアプリにはならなさそうだが、やりたい人たちはすぐ Fork して使えるだろう

徳井先生 がやってるのがとても面白い

Spectrogram Phase Reconstruction Test - Comparison between LWS and GriffinLim · GitHub

https://towardsdatascience.com/neuralfunk-combining-deep-learning-with-sound-design-91935759d628

 

Simutransのセーブデータ (非圧縮xml のみ) の路線情報を編集してみた ~ 路線番号を各社ごとの数字に振り直し

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。

路線情報を悪戯してみます。路線番号を各社ごとの数字に振り直します。
Simutrans本体にて新規路線を作ると、全社跨いで通しの数字が振られているようです。
そんな数字を、各社ごとでの通しの数字に置き換えます。[路線編集]ウィンドウで見た時に、ちょっと気持ちいい。

↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macchrome

Drop files here

                                   

 

 

本記事は、やっていることの整理のための脱線です。元々検討していた内容が泥沼にハマり、ディスプレイ上で燻り続けているわけです。
それは、xml形式のセーブデータ弄りではなく、binary形式、binaryのbzip2圧縮した形式のセーブデータの読み込み/書き出しでした。これが全然できない上に、どうも泥臭く元々のソースコードを丸々JavaScriptに移植する羽目になりそうでした。
そのサイズともなると、はてなブログの記事に書くのが怖くなりました。GitHubの出番でしょう。
そんなわけで、できる範囲の中で価値がありそうなネタを捻り上げてみたのでした。

 

なお、苦労。
xml の "CDATA" っていうのが、xmlでも特殊でパーサーがパースしてくれない!!

というわけで、以下のような置き換えを行なっています。

[読み込み時]

    var xml = e.target.result;
    // CDATA対策
    xml = xml.replace(/<!\[CDATA\[/g,'')
    xml = xml.replace(/\]\]>/g,'')
    // XMLのDOMをパースする
    var parser = new DOMParser();
    var dom = parser.parseFromString(xml, 'text/xml');

[書き出し時]

    var xmlString = serializer.serializeToString(dom);
    xmlString = xmlString.replace("><", ">\n<");
    // CDATA対策
    xmlString = xmlString.replace(//g,'<!\[CDATA\[')
    xmlString = xmlString.replace(/<\/CDATA>/g,'\]\]>')
    xmlString = xmlString.replace(/<CDATA\/>/g,'<!\[CDATA\[\]\]>')

 

[参考文献]

クライアントサイドJavaScriptでXML文書のDOMをパースする

XML Parser

Blob - Web API インターフェイス | MDN

HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)

Simutransのセーブデータ (非圧縮xml のみ) を読み込み->書き出し ~ 「年代設定」をOFF

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。

ちょっとしたエディットとして、「年代設定」をOFFにします。

↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macchrome

Drop files here

             

 

 

「年代設定」をOFFにする。これが一連のxml弄りonはてなブログの発端です。

ただし、非圧縮xmlでだけできるようなツールでは微妙。
アンケートを募ったところ、全然使われていないっぽい。

サーブデータ弄り本編には関係ないxmlをいじる準備は、まだまだ続きます。

 

なお、苦労。
xml の "><" の間にちゃんと改行がないと、 Simutrans 読んでくれない!!

というわけで、以下のような置き換えを行なっています。

var xmlString = serializer.serializeToString(dom);
// !!! this is the essential, 'cause Simutrans's xml-parser is pretty neat !!!
xmlString = xmlString.replace("><", ">\n<");

 

[参考文献]

クライアントサイドJavaScriptでXML文書のDOMをパースする

XML Parser

Blob - Web API インターフェイス | MDN

HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)