的石雄輝
2021.02.17
音声認識時のエラーの発生条件がわかりません
現在SOTAに話しかけ音声認識をし、その結果から該当する回答をSOTAが返答するというアプリを作成しております。
40分~60分ほど質問と返答を繰り替えしていると下記エラーが発生し、音声に反応しますが
結果がnullになります。
下記エラーが発生する状態、条件としてなにが原因として考えられるか教えていただけないでしょうか
[Info][CPlayWave]Play /dev/shm/wavtemp4.wav
[Info][CPlayWave]isEdison
[Info][CPlayWave]play------- 11890
[Info][CRobotSock]Connected server
[Info][CRobotSock]read error : Different address- addr  10 ,size:2
java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(InputStream.java:348)
at jp.vstone.RobotLib.CRobotSock.read(CRobotSock.java:379)
at jp.vstone.RobotLib.CRobotSock.readS32(CRobotSock.java:181)
at jp.vstone.RobotLib.CRobotSock.readU32(CRobotSock.java:197)
at jp.vstone.RobotLib.CMemDefU32.get(CMemDefU32.java:21)
at jp.vstone.RobotLib.CRobotMotion.initServo(CRobotMotion.java:183)
at jp.vstone.RobotLib.CRobotMotion.InitRobot(CRobotMotion.java:146)
at jp.vstone.RobotLib.CRobotMotion.InitRobot(CRobotMotion.java:118)
at jp.vstone.RobotLib.CRobotMotion.InitRobot(CRobotMotion.java:99)
at jp.vstone.RobotLib.CCommUMotion.InitRobot_CommU(CCommUMotion.java:124)
at jp.co.mysota.PlaySound.StartMotion(PlaySound.java:95)
at jp.co.mysota.mymain$1.run(mymain.java:339)
at java.lang.Thread.run(Thread.java:745)
[Info][CRobotSock]read error : Short read data- addr  40 ,size:4
[Info][CRobotSock]Connected server
[Info][SpeechRecog]setLangOK
[Info][CRobotSock]read timeout
[Info][CRobotSock]read error : Read data is null- addr  40 ,size:4
[Info][CRobotSock]Connected server
[Info][CPlayWave]removeShutdownHook
[Info][CPlayWave]removeShutdownHook
[Info][CRobotSock]read timeout
[Info][CRobotSock]read error : Read data is null- addr  40 ,size:4
[Info][CRobotSock]Connected server
[Info][CRobotSock]read error : Cmd Send Error- addr  40 ,size:4
[Info][CRobotMotion]MasterCtrlPeriod 16667.0
回答
Sotaサポート
2021.02.17
的石雄輝様

お世話になっております。Sotaサポートです。
時間経過によって音声認識に異常が発生する現象につきましては、弊社では把握しておりません。
ご提示いただいたエラーログは、内容からするとモーション再生に関係した物と推測されますが、音声認識・通信処理に関連しそうなエラーは他にありますでしょうか?

また、問題が発生した機体のシリアルコード及び大まかな発生日時(2021/2/17 16:00~17:00の間など)等を教えていただけると多少調査できるかもしれません。

何卒宜しくお願い致します。
的石雄輝
2021.02.18
回答ありがとうございます。SOTAシリアルコードは[8489-0236]です。
発生日時は02/17 9:30~10:30頃になります。

ブロック呼び出し順としまして音声認識→自作関数(スレッドブロックで呼び出し)→音声認識

自作関数は

 CRobotMem Connect()
 成功ならば
 CCommUMotion InitRobot_CommU();
 motion.ServoOn();
 発話音声があれば
 wish.play呼び出し

という順番になっております。
意図としまして発話中でも音声認識を行い音声によって中断などの分岐を行いたいため上記の順番にしております。

エラー内容がモーション再生に関係した物ということで質問が2点ございます

質問1:
エラー内容がモーション再生に関係した物ということはmotion.ServoOn();かwish.playで発生しいるものと思われます。
InitRobot_CommUでも返り値のチェックを行いtrueの場合のみ続きの処理を行うべきでしょうか?

質問2
SOTAがどういう状況の時CRobotMemのConnect()とInitRobot_CommUがfalseを返すのでしょうか?

以上よろしくお願い致します。



 
Sotaサポート
2021.02.18
的石雄輝様

お世話になっております。Sotaサポートです。

教えていただいた機体・時間情報につきまして、追って調査いたします。
またその他のご質問にお答えします。

まず、ご利用の機体はSotaと記載されている一方、CommUに関するメソッドを使用されていますが、実際にはどちらの機体をお使いですか?
実体と異なる機種のメソッドを使用すると問題が発生する可能性があります。
Init_CommU等はCCommUMotionのクラスに含まれるためこのクラスを使用していると思いますが、Sotaをご利用の場合はCSotaMotionをご利用ください。


また、提示されたプログラムでは、初期化を何度も行っているという状況ですか?
通常のSotaのプログラムでは、初期化を短時間で何度も行う想定ではないため、初期化を繰り返すことによる不都合が発生している可能性があるかもしれません。


・質問1に対する返答

VstoneMagicで出力されるデフォルトのソースでは確認していませんが、チェックと言う意味では確認しても無意味ではないと思われます。
ただ、まずは正しい機種に応じたクラス・メソッドをご利用ください。



・質問2に対する返答

CRobotMem.Connect()は、Sota内部ではモータやI2C等のデバイスを制御するプロセスと内部的なクライアント・サーバによって接続します。
接続が確立できたかどうかを戻り値として返します。
上記プロセスがフリーズ・異常終了していない限り、通常は問題無く接続できるかと思われます。

InitRobot_CommUでは、上記で接続したモータ・I2C制御プロセスに対して、モータ・I2Cの初期設定を指示するメソッドです。
初期化処理自体は、主に仮想的なメモリマップに機種に応じた設定値を書き込むような仕様のため、機種が異なる場合でも必ずしもエラーが出るとは限りませんが、ロボットの機種が異なる初期化メソッドを実行すると、一見正しく動いているように見えても、内部的に意図しない挙動が発生する可能性があります。
Sotaサポート
2021.02.18
的石様

当該機体の発生日時付近の挙動を、クラウド側に残されているログの情報より調査しました。
こちらの調査では、ネットワーク関係のエラーは見られず、クラウドに送信する録音データのストリーミングを扱うプロセスで何らかの問題が発生している形跡が見られました。
ただ、具体的な問題箇所の詳細までは特定できず、原因・対策は把握できておりません。

対話のレスポンスを向上するために対話関係の処理を短いスパンで実行しており、もしかしたら音声認識の実行スパンが短いことで問題が発生するかもしれません。
一度インターバルを少し長くとって問題が改善するかご確認いただけますか?

もしくは、ハードウェア的にマイクが不調になっており、それが本体のモーションや長時間稼働の発熱で正常に動作しなくなっている可能性があります。
稼働期間も比較的長期間の機体をお使いですので、ご利用状況によってはハード的なダメージが蓄積されているかもしれません。

もしハードウェア的な不調の場合、マイク及び関連の配線を修理することで改善するかもしれませんが、弊社にセンドバックいただいた場合でも、通常の動作検証で問題が再現できない場合は、その修理で確実に改善できる旨は保証いたしかねます。
また、調査・修理の際には手数料が発生いたします。
的石雄輝
2021.02.18
ご回答と調査ありがとうございます。原因がかなり絞り込めたと思います。

①MotionはCSotaMotionを利用するように変更。
②音声認識スパンのインターバルの引き延ばし。
上記状態で確認を行い、再発する場合また相談させていただこうと思います。

別件で申し訳ないのですがこのトピックで続けて質問させて下さい

現在SOTAが発話中もしくはモーション中という状態を取得する方法はありますでしょうか?
 
Sotaサポート
2021.02.19
的石様

VstoneMagicで作成する自作モーションのように、CRobotPoseクラスで1ポーズずつ制御する場合は、現在ポーズ遷移中かの情報が取得できないため、与えたポーズの遷移時間と同じ時間だけ待つと言う時間情報で同期する方法になります。
発話中かどうかに関しては、VstoneMagicの音声合成ブロックのように、TTSしたwaveファイルのパスをCPlayWave.PlayWaveに与えて再生している場合は、このメソッドの boolean beWaitの引数をtrueにすると、音声再生終了とメソッドの実行を同期することができます。

VstoneMagicの発話ブロックのように、MotionAsSotaWishのsayメソッドで発話・モーションを制御している場合、このメソッドの終了まで待つことで同期することができます。
的石雄輝
2021.02.22
回答ありがとうございます。

出ていたエラーは発生しないようになりました。

音声認識スパンのインターバルの引き延ばしで2秒ほどいれたのですが
下記エラーが発生します。

40分から60分ほどで発生がします。
 
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.net.SocketInputStream.read(SocketInputStream.java:223)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2296)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2589)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2599)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at jp.vstone.network.TCPIPClient.getObject(TCPIPClient.java:134)
at jp.vstone.sotatalk.SpeechRecog.setLang(SpeechRecog.java:442)
at jp.co.mysota.mymain.main(mymain.java:151)
at main.main.main(main.java:41)
java.io.IOException: socket stream
at jp.vstone.network.TCPIPClient.getObject(TCPIPClient.java:142)
at jp.vstone.sotatalk.SpeechRecog.setLang(SpeechRecog.java:442)
at jp.co.mysota.mymain.main(mymain.java:151)
at main.main.main(main.java:41)
Sotaサポート
2021.02.24
的石様

音声認識サーバと通信するところで何らかのエラーが発生している模様です。
(先に説明したSota内部のローカル通信処理とは異なると思われます)

通信経路(インターネット通信)で何か不安定な要素が無いかご確認ください。
的石雄輝
2021.02.24
症状の発生条件を多少しぼりこんだので別スレッドで質問させていただきます
この質問に回答する
 

Page Top