fc2ブログ

eclipse×processing×kinectの謎のエラー

Kinect×processing×simpleopenniをeclipseで動かしていたら、
こんなエラーが出て困りました。

# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x63e41f35, pid=1676, tid=300
#
# JRE version: 7.0_11-b21
# Java VM: Java HotSpot(TM) Client VM (23.6-b04 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [OpenNI.dll+0x11f35] xnSetSkeletonProfile+0x5
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\-------\hs_err_pid1676.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.


これは赤文字じゃなくて黒文字で出てきました。
「fatal error」って書いてあるので結構重要なエラーみたいですが、最初なにがおかしいのか分かりませんでした。

前まではふつうに動いていたのに・・・・
何かやってしまったようです。


とういうことで
どうやらKinectのドライバが原因のようです。
前にKinect sdkのバージョンをUpさせたときに、OpenNIのドライバがおかしくなってしまった模様。

Kinect sdkとOpenNIのドライバが同時に使える
kinect-mssdk-openni-bridge
というやつを使ってるんですが、
どっちかのバージョンが上がると、このkinect-mssdk-openni-bridgeも
新しいバージョンのが必要になります。


これを新しいのにしたら直りました!!!

・・・結構時間潰しました・・・・・・。

スポンサーサイト



Kinectめも。キネクトマイクAPIについて

最近Kinectのマイクをいじりたおしております。

Kinectのマイクを使って録音する際は
いくつか音質に関する値を指定することができます。

下の3つです。

KinectAudioSource Membersの
 ・AutomaticGainControlEnabled
 ・NoiseSuppression
 ・EchoCancellationMode

の3つです。

AutomaticGainControlEnabledとNoiseSuppressionはtruefalseの2通りで指定しますが、
EchoCancellationModeはNoneCancellationOnlyCancellationAndSuppressionの3通りの指定ができます。

僕が一番気になったのは、
NoiseSuppression=trueとEchoCancellationMode=CancellationAndSuppressionは両方ともノイズ抑制ができるみたいで、同じなのでは??ということです。
あと、AutomaticGainControlEnabledの設定はノイズ(雑音)にどのような影響を与えるかです。



同じ環境でそれぞれの設定で録音し、スペクトログラムにして比較してみました。
 ~~ここから結果です~~

NoiseSuppressionを使う時と使わないときの結果は一目瞭然でした。
この機能は素直に使った方が良さそうです!
(補足ですが、NoiseSuppression=falseにした場合、EchoCancellationMode=Noneよりも
ノイズが大きくなったような感じもしました。)
↓↓上がtrue、下がfalse
kinectノイズ制御の有無



NoiseSuppression=trueとEchoCancellationMode=CancellationAndSuppressionは
同じような波形になりました。
やはりノイズ抑制の効果は同じようです。
↓↓上がEchoCancellationMode=CancellationAndSuppression下がNoiseSuppression=true
kinectノイズ制御と両方の比較

また、EchoCancellationMode=CancellationOnlyだけでもノイズ抑制ができていたことはイガイでした。
エコーキャンセルはノイズとはあまり関係なさそうだったので・・・
実は関係あるんですね・・。

AutomaticGainControlEnabledをtrueにしてしまうと雑音が際立ってしまうことが分かりました。
オートゲインコントロールは音の大小にかかわらず大きさを常に一定に保つようにする機能のことなので、
この場合、小さい音の雑音が大きくなってしまうからです。
AutomaticGainControlEnabledはデフォルトではfalseになってますので心配しなくてもOKです。
逆にどういうときにオートゲインコントロールを使うんでしょうか?
まだ勉強不足です。
↓↓上がtrue、下がfalse
kinectゲインの有無



以上。
Kinectのマイクについてでした。
AutomaticGainControlEnabled以外は素直に全部利用したほうが良さそうですね!!
にほんブログ村 大学生日記ブログ 理系大学院生へ

検索フォーム
プロフィール

ABB

Author:ABB
入社3年目のSE。
日々、自分磨き中。
夢は独立!!

~取得予定~
・セキュリティスペシャリスト

~取得済み資格~
・TOEIC(最高):750
・TOEIC(最新):745('16/3月)
・応用情報技術者
・基本情報技術者
・普通自動車免許(MT)
・LPICレベル1('16/2月)

カテゴリ
最新記事
月別アーカイブ