OpenHRIAudioをWindowsでビルドする

このドキュメントでは、Windows環境でOpenHRIAudioをソースからビルドする方法について説明します。

基本的な手順は次の通りです。

  1. ビルド環境の準備
  2. OpenHRIAudioのビルド
  3. コンポーネントの動作確認

以下に作業内容を詳細に説明します。

ビルド環境の準備

ビルドに必要なツールとライブラリのインストールを行います。

ツール

  • C++の開発環境(VisualC++2010、VisualStuidioなど)
  • OpenRTM-aist 1.0.0以降(最新版の 1.1.0-RELEASEを推奨します)
  • CMake
  • doxygen
  • Gitクライアント(SourceTreeなど)

ライブラリ

  • Portaudio
  • Speex
  • Resample

次の項からインストールの手順を説明します。

ツールのインストール

今回用いるツールはすべてインストーラが存在します。リンク先にあるインストーラをダウンロードした後に実行することで、それぞれのツールのインストールが完了します。

Visual C++ のインストール

OpenHRIAudio・OpenRTM-aistはCMakeを用いて同一ソースから複数の環境でのビルドに対応しており、CMakeによるVisualC++・VisualStuidoでのビルドに対応したプロジェクト生成が可能です。

以下のリンク先から自分の環境にあったインストーラをダウンロード・実行します。

※ 開発環境に Visual Studio 2012 Express 又は、Visual Studio 2013 Express をお使いになる場合は、OpenRTM-aist(C++)をソースコードからビルドする必要があります。 ビルド方法はOpenRTM-aistのオフィシャルサイト内の こちらのページ をご確認ください。

OpenRTM-aistのインストール

OpenHRIAudioはOpenRTM-aist-1.0.0以降(または、1.1.0-Release )が必要です。 以下のリンク先から自分のWindows環境(例:32bit又は64bit、Visual Studioのバージョン)にあったインストーラをダウンロード・実行します。

※ 開発環境に Visual Studio 2012 Express 又は、Visual Studio 2013 Express をお使いになる場合は、OpenRTM-aist(C++)をソースコードからビルドする必要があります。 ビルド方法はOpenRTM-aistのオフィシャルサイト内の こちらのページ をご確認ください。

CMakeをインストールする

CMakeとは、複数の開発環境でソフトウェアのビルドを自動化するためのクロスプラットフォームなシステムです。

OpenRTM-aist、OpenHRIAudioはCMakeを使用しています。以下リンク先から自分の環境に合わせたインストーラをダウンロード・実行します。

※ 最新版CMake 3.0 は不具合がおきる為、Windows 2.8をインストールしてください。

doxygenをインストールする

doxgenはソースを解析してドキュメントを生成するツールで、OpenHRIAudioとOpenRTM-aistで使用しています。 以下のリンクからインストーラをダウンロード・実行します。

ライブラリのインストール

OpenHRIAudioのビルドと実行に必要なライブラリPortAudio、Speex、Resampleをインストールします。

これらのライブラリにはソースからのビルドが必要です。ライブラリのビルドを行うには、適当な作業フォルダを作りそこでビルドを実行すると良いでしょう。

以下にはCドライブ直下に [tmp] フォルダを作成して作業を行う設定で説明します。

PortAudioをビルドする

PortAudioとは、WindowsやMac、Linuxなど様々なプラットフォームに対応したオープンソースaudio I/O(インプット/アウトプット) ライブラリです。

PortAudioのソースファイルに同梱されているCMakeを修正し、このページからダウンロードしたバッチファイルを修正してビルド・インストールします。

手順

  1. PortAudioのソースファイル pa_stable_v19_20111121.tgz をダウンロードし、[C:¥tmp] に展開します。

※展開にはLhaplusなどのアーカイブユーティリティを用いましょう。

  1. 次に、[C:\tmp\portaudio] フォルダのCMakeList.txtをテキストエディタ(notepadなど)で修正します。

54行目から行頭に‘#‘(半角)を入れることでコメントアウトし、4行を追記します。:

# コメントアウト
#IF (ASIOSDK_FOUND)
#OPTION (PA_USE_ASIO "Enable support for ASIO" ON)
#ELSE (ASIOSDK_FOUND)
OPTION (PA_USE_ASIO "Enable support for ASIO" OFF)
#ENDIF (ASIOSDK_FOUND)

# 追記
OPTION (PA_WDMKS_NO_KSGUID_LIB "Link with kuguid.lib" ON)
if(PA_WDMKS_NO_KSGUID_LIB)
ADD_DEFINITIONS(-DPA_WDMKS_NO_KSGUID_LIB)
endif(PA_WDMKS_NO_KSGUID_LIB)

※空白や不要な文字列はcmakeを実行したときエラーの原因となるので削除します。

  1. 次に build_portaudio.bat を [C:\tmp\portaudio] フォルダにダウンロードします。このバッチファイルは、[C:\tmp\portaudio\work] 作業用フォルダでcmakeとビルドを実行し、生成したライブラリをlibフォルダにコピーします。変数VC_VERSIONとARCHを自分の環境に合わせて修正します。

※ 数字は半角で入力します。

※ 空白や不要な文字列はバッチファイルを実行したときエラーの原因となるので削除します。

  • build_portaudio.bat

  • 変数ARCHの修正(6行目):

    @rem お使いの環境に合わせてアーキテクチャを修正します。
    set ARCH=x86
  • 32bit環境の場合 set ARCH=x86
  • 64bit環境の場合 set ARCH=x64
  • 変数VC_VERSIONの修正(9行目):

    @rem お使いのVisual studio のversion に合わせて修正します。
    set VC_VERSION=12
  • VisualStudio2010の場合 set VC_VERSION=10
  • VisualStudio2012の場合 set VC_VERSION=11
  • VisualStudio2013の場合 set VC_VERSION=12
  1. 修正後、コマンドプロンプトを起動しバッチファイルを実行します。:

なおバッチファイルはアイコンをダブルクリックしても実行出来ますが、ビルド中のエラーを確認しやすいためコマンドプロンプトから実行します。

コマンドプロンプトの起動方法は複数ありますが、ここでは「スタートメニューでファイルを検索して起動」方法を説明します。(以下はWindows7の場合です)

左下のスタートボタンをクリックし、スタートメニューを表示します。

.

../../_images/cmd_00.png

.

「プログラムとファイルの検索」に cmd.exe と入力した後にEnterを押下し、コマンドプロンプトを起動します。

コマンドプロンプトは起動直後マイドキュメントにいるので、以下の “>” を除くコマンドを実行し [C:\tmp\portaudio] フォルダへ移動します。:

> cd C:\tmp\portaudio

.

../../_images/cmd_01.png

.

次に[C:\tmp\portaudio] フォルダにある build_portaudio.batを、以下の “>” を除くコマンドでビルドを実行します。:

> build_portaudio.bat
  1. バッチファイル完了後、[C:\tmp\portaudio\lib] フォルダにportaudio_x86.lib、portaudio_x86.dllが確認できます。

コマンドプロンプトはexitコマンドを実行して、終了します。:

> exit

Speexをビルドする

SpeexとはVoIPアプリケーションやポッドキャストで使われるフリーな音声圧縮コーデックです。

Speexのソースコードを、このページでダウンロードできるCMakeファイルとバッチファイルを使ってビルドし、libspeex.libを作成します。

手順

  1. ここ からソースコードspeex-1.2rc1.tar.gzをダウンロードし、[C:\tmp] フォルダ に展開します。

※ 展開にはLhaplusなどのアーカイブユーティリティを用いましょう。

  1. 次に CMakeList_speex.txt とバッチファイル build_speex.bat を [C:\tmp\speex-X.XrcX] (“X.XrcX” はヴァージョン番号)フォルダにダウンロードします。このバッチファイルは、[C:\tmp\speex-X.XrcX\work] フォルダでビルドを実行し、生成したライブラリをlibフォルダにコピーします。

ダウンロードしたCMakeLists_speex.txtはCMakeLists.txtにリネームし、バッチファイルはportaudioと同様に変数VC_VERSIONとARCHを修正します。

  • CMakeLists_speex.txt

  • build_speex.bat

  • 変数VC_VERSIONとARCHの修正、(6行目):

    @rem お使いの環境に合わせてアーキテクチャを修正します。
    set ARCH=x86
    @rem お使いのVisual studio のversion に合わせて修正します。
    set VC_VERSION=12
  1. 修正後、portaudioと同様にコマンドプロンプトを起動し、ビルドを実行します。

コマンドプロンプトで次のコマンドを実行し [C:\tmp\speex-X.XrcX] フォルダへ移動、バッチファイルを用いてビルドを実行します。:

> cd C:\tmp\speex-X.XrcX
> build_speex.bat
  1. 完了後、[C:\tmp\speex-X.XrcX\lib] フォルダが確認できます。

コマンドプロンプトはexitコマンドを実行して、終了します。:

> exit

Resampleをビルドする

ResampleとはFIRフィルタを使ってサウンドファイルを再サンプリングし、そのサンプリングレートを変更するプログラムです。

ResampleのソースコードをこのページからダウンロードするCMakeファイルとバッチファイルを使ってビルドし、libresample.libを作成します。

手順

  1. ここ からlibresample-0.1.3.tgzをダウンロードして、~/HRIに展開します。

※ 展開にはLhaplusなどのアーカイブユーティリティを用いましょう。

  1. 次に CMakeList_libresample.txt とバッチファイル build_libresample.bat を [C:\tmp\libresample-X.X.X] (“X.X.X” はヴァージョン番号)フォルダにダウンロードします。バッチファイルは、[C:\tmp\libresample-X.X.X\work] フォルダでビルドし、生成したライブラリをlibフォルダにコピーします。

CMakeLists_libresample.txtはCMakeLists.txtにリネームし、バッチファイルはportaudioと同様に環境に合わせて変数VC_VERSIONやARCHを修正します。

  • CMakeLists_resample.txt

  • build_libresample.bat

  • 変数VC_VERSIONとARCHの修正、(6行目):

    @rem お使いの環境に合わせてアーキテクチャを修正します。
    set ARCH=x86
    @rem お使いのVisual studio のversion に合わせて修正します。
    set VC_VERSION=12
  1. 修正後、portaudioと同様にコマンドプロンプトを起動し、ビルドを実行します。

コマンドプロンプトで次のコマンドを実行し [C:\tmp\libresample-X.X.X] フォルダへ移動、バッチファイルを用いてビルドを実行します。:

> cd C:\tmp\speex-X.XrcX
> build_libresample.bat
  1. 完了後、[C:\tmp\libresample-X.X.X\lib] フォルダにlibresample.libが確認できます。

コマンドプロンプトはexitコマンドを実行して、終了します。:

> exit

OpenHRIAudioのビルド

OpenRHIAudioのソースファイルをダウンロードした後、ソースファイルに同梱しているバッチファイルでビルドし、実行ファイルを生成します。

手順

  1. Github にあるCMake対応のブランチをダウンロードします。
githubのopenhri/OpenHRIAudioのページを開き、[branch:master]となっていたら、クリックして[ForCMake]に変更後、右下の[DownloadZIP]からダウンロードします。zipファイルは展開後、[C:\tmp]フォルダに置きます。
  1. 次に[C:\tmp\OpenHRIAudio-ForCMake]フォルダにあるバッチファイルbuild_OpenHRIAudio.batを修正します。このバッチファイルは、[C:\tmp\OpenHRIAudio-ForCMake\work]フォルダでビルドし、生成した実行ファイルとライブラリを[C:\tmp\OpenHRIAudio-ForCMake\bin]フォルダにコピーします。

portaudioと同様に自分の環境に合わせて変数VC_VERSIONやARCH、PORTAUDIO_DIR、RESAMPLE_DIR、SPEEX_DIRを修正します。

  • 変数VC_VERSIONやARCHの修正(5行目):

    @rem お使いの環境に合わせてアーキテクチャを修正します。
    set ARCH=x86
    
    @rem お使いのVisual studio のversion に合わせて修正します。
    set VC_VERSION=12
  • 変数PORTAUDIO_DIR、RESAMPLE_DIR、SPEEX_DIRの修正(00行目)

それぞれ、変数PORTAUDIO_DIRは[C:\tmp\portaudio]に、変数RESAMPLE_DIRは[C:\tmp\libresample-X.X.X]に、変数SPEEX_DIRは[C:tmpspeex-X.XrcX]に修正します。:

@rem お使いの環境に合わせてパスを修正します。
set PORTAUDIO_DIR=C:\tmp\portaudio
set RESAMPLE_DIR=C:\tmp\libresample-X.X.X
set SPEEX_DIR=C:\tmp\speex-X.XrcX
  1. 修正後、portaudioど同様にコマンドプロンプトを起動し、ビルドを実行します。

コマンドプロンプトで次のコマンドを実行し[C:\tmp\OpenHRIAudio-ForCMake]フォルダへ移動後、バッチファイルを用いてビルドを実行します。:

> cd C:\tmp\OpenHRIAudio-ForCMake
> build_OpenHRIAudio.bat
  1. バッチファイル終了後、[C:\tmp\OpenHRIAudio-ForCMake\bin]フォルダに以下の実行ファイルとdllライブラリが確認できます。
  • AutoGainControl.dll
  • AutoGainControl.exe
  • BeamForming.dll
  • BeamForming.exe
  • ChannelSelector.dll
  • ChannelSelector.exe
  • CombFilter.dll
  • CombFilter.exe
  • DSArray.dll
  • DSArray.exe
  • EchoCanceler.dll
  • EchoCanceler.exe
  • EchoSuppressor.dll
  • EchoSuppressor.exe
  • Gate.dll
  • Gate.exe
  • Mixer.dll
  • Mixer.exe
  • NoiseReduction.dll
  • NoiseReduction.exe
  • PortAudioInput.dll
  • PortAudioInput.exe
  • PortAudioOutput.dll
  • PortAudioOutput.exe
  • SamplingRateConverter.dll
  • SamplingRateConverter.exe
  • SignalGeneration.dll
  • SignalGeneration.exe
  • portaudio_x86.dll
  • portaudio_x86.lib

※現在、WavPlayer.exe、WavRecord.exe、WebRTCVAD.exeはWindowsサポートを一時中止しております。

  1. コマンドプロンプトはexitコマンドを実行して、終了します。
> exit

コンポーネントの動作確認

PortAudioInput.exeとPortAudioOutput.exeを使用し、生成した実行ファイルの動作確認を行います。

※ 音声入力を行うためマイクをご用意ください。ヘッドホンもあると、より音声確認しやすくなります。
  1. 最初にマイクとヘッドホンをPCに接続します。
  2. OpenRTM-aistのネームサービスと実行ファイルを起動します。

ネームサービスの起動

  • Windowsの[スタート]ボタンをクリックし表示したメニューから、[すべてのプログラム]>[OpenRTM-aist1.1]>[C++]>[tools]>[Start NamingService]をクリックし、ネームサービスを起動します。

.

alternate text

ネームサービスの画面

.

PortAudioInputComp.exe、PortAudioOutputComp.exeの起動

  • [C:\tmp\OpenHRIAudio-ForCMake\bin]フォルダを開き、PortAudioInputComp.exeとPortAudioInputComp.exeをそれぞれWクリックで起動します。
  1. 次にOpenRTP1.1.0を起動します。

OpenRTP1.1.0はOpenRTM-aistの開発ツールのひとつで、OpenRTM-aistと同時にインストールします。

Windowsの[スタート]ボタンをクリックし表示したメニューから、[すべてのプログラム]>[OpenRTM-aist1.1]>[C++]>[tools]>[OpenRTP1.1.0]をクリックし起動します。

初回起動時はEclipseの起動画面と「ようこそ」ウィンドウを順に表示するので、「ようこそ」画面の[×]をクリックします。 ※ すでに初回起動を行いRTSystemEditorを表示する場合、次の項目(4.)に進みます。

.

alternate text

「ようこそ」の画面

.

次にRTSystemEditorを開きます。

「パースペクティブを開く」ボタンをクリックして「パースペクティブを開く」ウィンドウを表示し、[RTSystemEditor]を選択した後に[OK]をクリックします。

.

alternate text

.

Eclipseのタイトルバーに「RT System Editor」と表示されたら成功です。

[OpenNewSystemEditor]ボタンをクリックし[SystemDiagram]を開いておきます。

  1. 次にOpenRTP1.1.0を使って接続やアクティベートなどを行います。
ネームサービスビューにあるネームサーバとコンテキストの[横向き▲]ボタンをクリックし、実行ファイルを表示します。

.

alternate text

ネームサービスビューの画面

.

ネームサーバが表示されていない場合は、次の操作を行って表示しましょう。

ネームサービスビューの[ネームサーバを追加]ボタンをクリックし、「ネームサーバへ接続」ウィンドウを表示します。”localhost”または”127.0.0.1”と入力した後に[OK]をクリックし、ネームサーバを登録します。

.

alternate text

ネームサーバの追加

.

次にネームサービスビューに表示した実行ファイルをひとつずつドラッグアンドドロップし、[System Diagram]に表示します。

.

alternate text

ドラッグアンドドロップ

.

実行ファイルのポート接続を行います。

「System Diagram」上のPortAudioInputの出力ポート[AudioDataOut]からPortAudioOutputの入力ポート[AudioDataIn]へドラッグアンドドロップします。データポートからドラッグを始めると線を表示します。接続先のポートでドロップすると、次のウィンドウを表示するので[OK]を押下します。

.

alternate text

Connector Profile

.

ポート間に線が表示されたら、接続は成功です。

.

alternate text

リンク接続成功

.

[All Activate]ボタンをクリックして、実行ファイルをアクティベートします。 実行ファイルが、青から緑色に変更になったらアクティベートは成功です。マイクから音声を入力すると、スピーカ又はヘッドホンで音声を確認できます。

.

alternate text

[All Activate]ボタンでアクティベートにする

.

  1. 実行ファイルを終了する場合は、「System Diagram」の実行ファイル上で右クリックし「Exit」を選択します。実行ファイルの動作確認は以上になります。

※ OpenHRIAudio、OpenHRIVoice、SEATSATなどをインストールすると以下のようなシステムを動作確認することも可能です。

  • システム構成例

お問い合わせ先

不明な点や不具合が起きた場合、OpenRTM-aistのフォーラムまたはメーリングリストにご連絡ください。