
 

USE_AUDIO 定数を define してから NtKinect.h を include する と NtKinect の音声関係のメソッドや変数が有効になります。
setAudio() 関数を呼び出すと音声の方向が beamAngle 変数に入ります。 Kinectに対面した人間から見て、右に移動するとプラスの値、左に移動するとマイナスの値となります。
| 返り値の型 | メソッド名 | 説明 | 
|---|---|---|
| void | setAudio(bool flag = false) | 
音声を取得し、録音中ならファイルに保存する。 
 | 
| void | drawAudioDirection(cv::Mat& image ) | 音声ビームの方向を image に描画する。 | 
| bool | isOpenedAudio() | 録音ファイルをopen中かどうかを返す。 | 
| void | openAudio(string path ) | path を録音用ファイルとしてオープンする。 | 
| void | closeAudio() | 録音用ファイルをクローズする。 | 
| 型 | 変数名 | 説明 | 
|---|---|---|
| float | beamAngle | 音声の方向(左右への角度) | 
| float | beamAngleConfidence | beamAngleの信頼度 (0.0 〜 1.0) | 
| UINT64 | audioTackingId | 発話者のskeletonTrackingId | 
WaveFile.hは既にプロジェクトに追加されているはずです。
NtKinect.hをincludeする前に USE_AUDIO 定数をdefineします。 setAudio()を呼び出すとアレイマイクにより音声が取得されて方向が計算されます。 結果はbeamAngle変数とbeamAngleConfidence変数に入ります。 drawAudioDirection()関数で音声方向をcv::Matに描画します。
| main.cpp | 
| #include <iostream> #include <sstream> #define USE_AUDIO #include "NtKinect.h" using namespace std; void doJob() { NtKinect kinect; cv::Mat beam; while (1) { kinect.setRGB(); kinect.setAudio(); cv::putText(kinect.rgbImage, "beamAngle: "+to_string(kinect.beamAngle), cv::Point(50, 50), cv::FONT_HERSHEY_SIMPLEX, 1.2, cv::Scalar(0, 0, 255), 1, CV_AA); // rename CV_AA as cv::LINE_AA (in case of opencv3 and later) cv::putText(kinect.rgbImage, "beamAngleConfidence: "+to_string(kinect.beamAngleConfidence), cv::Point(50, 80), cv::FONT_HERSHEY_SIMPLEX, 1.2, cv::Scalar(0, 0, 255), 1, CV_AA); cv::imshow("rgb", kinect.rgbImage); kinect.drawAudioDirection(beam); cv::imshow("beam",beam); auto key = cv::waitKey(1); if (key == 'q') break; } cv::destroyAllWindows(); } int main(int argc, char** argv) { try { doJob(); } catch (exception &ex) { cout << ex.what() << endl; string s; cin >> s; } return 0; } | 
ウィンドウの左上に、音声の方向とその信頼度が表示されます。 また、別ウィンドウ beam に音声方向が線で表示されます。

上記のzipファイルには必ずしも最新の NtKinect.h が含まれていない場合があるので、 こちらから最新版をダウンロードして 差し替えてお使い下さい。
