はじめに
HARKの記事って需要ありますか?
いきなりですが、HARKの記事って需要あります? もし検索でこの記事にたどり着いたのなら(HARKの記事の需要があるのならば)、 LGTM お願いします(LGTMで需要判断したいです)。
HARK触って2週間程度なのですが、QiitaにHARKの記事がほぼなく、役立ったのは「HARK+TAMAGO-03で音の方向を検知してみた」のみでした。実際、私がHARKを触ってみて思ったのは、公式ドキュメントは充実しているのですが、私のように、何も知識がない状態で初めて使ってみた人にとっては、最初からいろいろハマりどころ多かったです。 自分がハマったことを含めて、公式では不足している内容を補いつつ、今後もHARKについて投稿していこうと考えています。
注意
記事のタイトルは「HARK3.1.0のインストール」ですが、インストールする際のコマンドは書かれていません。実際のインストール詳細は、「公式ページ」をご確認ください。 ここでは私がインストールする際に、調べたことやハマったことを書いていきます。
文章は推敲不足だと思いますが、HARKの記事がほぼないので、とりあえず投稿して問題あったら直していこうと思います。ご了承ください。
また、 私はHARKと一切関係がありません。 たまたまHARKを使う機会があったので記事を書いているだけ、かつ初心者なので、質問されても自分がやったことしか回答できません。フォーラムに投稿ください。
HARK
HARKとは?
2020/11/21にHARK3.2の講習会の案内のPDFから抜粋します。HARKを使おうと思っている時点でどういうものかわかっている気がしますが、、、、。
ロボット聴覚システムHARKは,複数(4~16本程度)の任意配置のマイクロホン(マイクロホンアレイ)を使用し,音源
定位,音源分離,分離音音声認識をほぼ実時間で行うことができるソフトウェアです.2008年から,ロボット聴覚研究
の成果として,音響処理でのOpenCVを目指してオープンソースソフトとして公開を始めました.公開している Linux版,
Windows版は,様々なロボット上に移植され,三話者同時発話認識やクイズ司会者などのデモを通じた動作実証が行わ
れてきました.最近では,災害現場への展開やUAVによる空中からの音情報の取得,さらには,カエルの合唱や野鳥の
歌の解析,教育を目的とした議論分析にも応用されています.マイクロホンアレイとして,SiFタマゴ(8本),クラゲ
君(8本),Dacho(16本),RASPシリーズといった一般的に入手可能なデバイスを標準でサポートしており,簡単にGUI
を用いたプログラミングができます.今年度は,ROSに加えて,MQTTをサポートし,分散処理や他システムとの統合の
自由度を向上した HARK 3.2 のリリースを予定しています.
さらに知りたい方は、HARK Document の1章、2章などをご確認ください。
HARKライセンス
HARKのライセンスはHARK Licenceとなっており、研究用途でのみ無償公開になっているようです。
HARKフォーラム
不明点をフォーラムに質問すると丁寧に回答してくれます。質問する前に、すでにフォーラムに同じような内容が質問されていないかフォーラムやFAQをまず確認するのがマナーですのでご注意ください。
でも、正直、HARKを初めて触っているのに適切な検索ワードが見つからず、一通りフォーラムとFAQをみたつもりだったのに、私もすでに他の人がしているような同じような内容を何度か質問してしまっています(あとで気付きました)。それでもフォーラムの方は丁寧に回答してくれます。本当にフォーラムの方、お手数おかけして申し訳ありません。
また、このフォーラムへの質問をみると、自分と同様に、はじめに動かすチュートリアル的なところでハマっている人も見かけます。自分もハマり、Qiitaを検索したけど、記事がなくフォーラム検索したり、フォーラムに何度か投稿しています。それが、QiitaにHARKの記事を投稿しようと思った理由の1つです。
その他
「HARKはもともとマイクアレイを一つだけつなげることを前提に作られている」システムだそうです。2日前に知りました。「もともと」とあるので、実際に現在は複数のマイクロフォンアレイを使えるようですが、一つを前提として設計されたシステムであるため、複数に対応したノードが正常に動作しない可能性もあるようです。複数のマイクロホンアレイでHARKを使う場合は、正常に動かない可能性も考えた上で、HARKを選択した方がよいかもしれません。
PC環境
2020年10月時点での推奨されるPCスペック
- Core iシリーズ(4Gメモリ, SSD 推奨)のようです。実際に動かす処理次第だと思いますので、HARKをちょっと触ってみる程度なら大抵のPCで大丈夫そうです。
- ちなみに私のHARKのためのPCは、CPU(約4年前のcore-i7)、HDD、メモリ16GB です。
OS
-
Linux(Ubuntu16.04 64bit/18.04 64bit)、Windows(10 Pro 64bit)版の2つがあり、Windows版はHARKは3.1.0でなく、3.0.Xと少し古いようです。
- 私は、はじめWindows版のHARKを入れていたのですが、 複数のマイクアレイから複数のマイクロホンアレイからマルチチャネル音声波形データを取り込むためのノード MultiAudioStreamFromMicを使おうとしたのですが、ノード一覧に表示されなくて困りました。フォーラムに問い合わせたところ、そのノードはLinux版でしか使えないとのことでした。ドキュメントみる限りLinux版しか使えないって記述がないのでわからない。で、Ubuntuに変更しました。
VMでもいいの?
前述の講習会のご案内のPDFに「HARKの実行環境はVmware/Virtualbox 用の仮想マシンとして提供します。」とあるので、HARK触ってみるならVMで大丈夫だと思います。
ただ、例えばTAMAGO-03の場合はUSB接続のマイクアレイを接続するので、VMのゲストOS側でUSBを認識する必要があります。また、MacでTamago-03を2台を接続したら1台しか認識しなかったので、VMでUbuntu入れても、ホスト側のMacで1台しか認識しなかったらゲスト側でも1台しか認識できないのかなぁと推測します(VMで認識するかまでは試していないです)。これはHARKではなくMacかTAMAGO-03側の問題です。
さらに、これ私の知識不足だと思いますが、Virtualbox自体のバグでホストとゲストでフォルダ共有するとそのフォルダが正しく更新されないsendfileに関連するバグがあり、NginxやApacheだとsendfile offにすればいいのですが、HARK(nodejs)の場合はどうやって対応するのかわからず、かつ、実際このバグ(キャッシュ)によって、分離結果がおかしくて困りました(HARKのせいでなくvirtualboxのバグのせいで、データがおかしくて悩みました)。
Windows版で、HARK-Python3は利用可能か?
HARK-Python3を使って、HARKの独自ノードを作れます。FAQを読むと、「HARK Windowsでの独自ノードの追加はサポートされていません。」とあるが、Windows版のHARKでも、HARK-Python3を用いたPython実装で独自ノードを作成する事は可能です。この意味は、「Windows版のHARKでは、MSYS2やAnaconda等の複合環境を用いてビルドする関係で環境構築の難しさからソースコードに改変が必要な箇所などを含め情報を開示しておりません。つまり、C++実装による独自パッケージのビルド環境がユーザー様側で容易に構築できないためサポートしていない」という意味だそうです。
私のHARKの環境
会社からWindows10Pro(スペックは前述)を借り、WindowsとUbuntuのデューアルブートにしてUbuntu(18.04 日本語Remix)でHARK3.1.xを動かしています。あとでwindowsに戻して返さないといけないのですが、USBフラッシュメモリとかから起動すると、マイクロホンアレイを接続するUSBポートが埋まるので、パーティション切ってUbuntuを入れました。
また、HARK使うにあたり、USB接続って実用的でなく、ラズパイにTamgo-03を接続し音声をソケット通信で送り、PCで受信しHARKで音源分離したいと思っていたので、調べるとHARKのソケット通信の手続きが2ポート(デフォルトで52920,52921)を使ってやるようなので、VM使うにしてもNATだとポート番号とかでハマったら嫌だなぁと思い、NATではなくブリッジ接続しようと思ったので、条件がかなり特殊かもしれないです。この条件がなければ、普段Macを利用しているので、Macで VM使うと思います。
-
以下は、デュアルブートにするまでに失敗した環境と、問題点
- Mac + Vagrant + VirtualBox(NATではなくブリッジ) + Ubuntu
- 問題点:Tamago-03を2台認識しない(1台は会社に買ってもらい、もう1台は他から借りたのだけど、、借りて試して初めて1台しか認識しないのに気付いた)。前述のVirtualBoxのsendfileの問題もあり、デュアルブートに心が傾いた。
- Windows
- 問題点:MultiAudioStreamFromMicノードが、Windows版HARKで使えない。
- Windows + WSL2(Windows Subsystem for Linux 2) + Ubuntu
- ネットワークをブリッジにするの調べるの面倒なのと、、USB機能を追加するには、「WSL2でUSBデバイスを認識させる」にあるように、カーネルをコンパイルしないいけないらしくさらに面倒なのでやめました。Virtualboxのように簡単だと思ってよく調べずにHARKが動作するところまでやったあとに気付いたのは、失敗でした...orz)。
- WSL2をインストールする際に、 「WSL2 に必要な msi が見つからない人へ 」が参考になりました。
- VM全般の問題点(※ 私が利用しているPCとネットワークの問題だけど)
- HARK Designerは、ブラウザにIPとポート指定してリモートで使えるのですが、DisplayLocationノードなどを使い、定位結果をみる際はubuntu側で表示されホスト側には表示されないので、VNC/XDMCP接続してデスクトップごと表示して接続するので、PCスペックによっては、マウスポインタが飛んだり、画面がカクカクしたりしてイライラするかもしれません(dispayの環境変数変えたり、Xwindow飛ばせば問題ないかもしれないのかもしれないけど、調べるよりデュアルブート選びました)。
- Mac + Vagrant + VirtualBox(NATではなくブリッジ) + Ubuntu
-
ubuntuをデュアルブートにした際に参考にしたもの
マイク
対応するハードウェアについては、Supported Hardwareを参照ください。
私は、たまご型マイクアレイ(TAMAGO-03)を使っていますが、1個約3万円します。会社に買ってもらいました。さすがに3万円を自腹では出せないです。
マイクアレイでなくても、Macのマイクからの音声をソケット通信で送り、HARKで受信してwavに保存をやってみて、うまくいきましたが、正直、マイクロホンアレイでないならHARK使う意味ないと思います。C++やpythonで、コード書いた方が楽だと思います。
HARKのインストール
公式ドキュメントの各OSのインストール方法を参照ください。書いてある通りやればうまくいきます。
Linux版の補足
- 音声認識しなくていいなら、
sudo apt install kaldidecoder-hark
は不要。私は入れていないです。
windows版の補足
-
graphviz-2.38.msi (Graphviz v2.38)
は、graphivzは32bit版しかなく、32bit版をインストールして問題ないです。graphvizのインストール方法は、ググってでてきた誰かが書いた内容ではなく、公式graphvizサイトのダウンロードをみましょう。2020/10/03 現在、stableに、2.44のmsiのみあり、ダウンロードできる状態ですが、。私は2.44でも問題ないと思っていますが、動かないときに余計なこと考えなくて良いように、HARKの公式の通りの2.38をインストールしました。 -
ChromeStandaloneSetup64.exe (Google Chrome)
は、Standaloneでなくてもいいと思いますが、chromeがアップデートされてHARKが動かなくなった場合に、windows版HARKの対応はLinux版と比べて遅いと思われるので、chromeを動いていた時のバージョンにするためにダウンロードしておいた方がよいかなぁ程度だと思います。実際、これでなくても動きました。 - 音声認識しないなら、
Windows native packages of HARK and Kaldi
は不要。私は入れていないです。
Hark-Python3を使いたい場合
- Hark-python3のインストール方法を参照し、インストールしてください。私はインストールしています。
その他
- その他のパッケージは、 Package List and License を参照ください。
HARK Desingerの起動
Linux版
HAKRのGUIツール HARK Designerの起動方法が、インストール方法の「HARK Designer startup.」部分に書いてあります。
- デフォルトブラウザ(chrominum)で起動する場合
hark_designer
- Firefoxで起動したい場合
hark_designer f
- ネットワーク越しにアクセスしたい場合
ubuntuで、以下のコマンドで起動し、アクセスしたいPCにブラウザにIPトポートを指定する(デフォルトのままならポートは3000なので、xxx.xxx.xxx.xxx:3000 のような形式)。
hark_desigenr allowremote
Windows版
デスクトップのHARK Designerのアイコンをクリック
最後に
次回は、【HARK】#002 - HARKインストール後に最初にすべき3つのこと について書こうと思います。 もしHARKについての記事に需要があるならば、LGTMをお願いいたします。
他の記事
・【HARK】#002 - HARKインストール後に最初にすべき3つのこと
・【HARK】#003 - HARKクックブック「はじめての録音」をやってみた
・【HARK】#004 - HARKクックブック「マイクロホンからのリアルタイム音源定位」をやってみた
・【HARK】#005 - arecordで、8chのwavファイルを作る方法
・【HARK】#006 - HARK::ParsingException