讯飞出现的错误

java端未说话,则出现以下错误:

错误原因:您好像没有说话哦.
at com.iflytek.cloud.b.c.a.do(Unknown Source)
at com.iflytek.cloud.b.c.a.f(Unknown Source)
at com.iflytek.cloud.b.c.a.i(Unknown Source)
at com.iflytek.cloud.b.c.a.char(Unknown Source)
at com.iflytek.cloud.b.e.a$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

windows下没有msc32.dll,或者linux下没有加载.so文件,则会出现以下错误:

Exception in thread “Thread-670” java.lang.UnsatisfiedLinkError:
.MSC.QISRSessionBegin([B[BLcom/iflytek/msc/MSCSessionInfo;)[C
at com.iflytek.msc.MSC.QISRSessionBegin(Native Method)
at com.iflytek.cloud.b.c.c.a(Unknown Source)
Xunfei: no speak

python端未启动

java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)

java中设置的端口号,必须要与python端设置的端口号一致!!!

端口占用

  1. kill 掉占用进程: lsof -i|23333
  2. socket.shutdown然后socket.close
  3. 允许端口复用
  4. 程序只能等到下一个连接到来时,才能关闭线程。 (解决办法,加入监听等待超时)
    socket.setdefaulttimeout(timeout)
    这样默认20秒之后就会超时。
    5.

教程 http://bbs.chinaunix.net/thread-4083249-1-1.html

say重复多次

os.system(‘java -jar /var/persistent/home/nao/java/xf_lib/xunfeiutf.jar’)

  1. choregraphe中运行python, 该句在terminal中执行, ok
  2. 直接加入python脚本,运行 python comm_server.py ok
  3. 加入choregraphe中,运行 not ok

t=os.system(‘/var/persistent/home/nao/java/xf_lib/run_jar.sh’) # 调用python脚本或jar包都返回512, 其他返回0
t=os.system(‘echo fdfd>>/var/persistent/home/nao/java/xf_lib/test1.txt’) # 返回0
t=os.system(‘java -jar /var/persistent/home/nao/java/xf_lib/xunfeiutf.jar’) # 返回32512

原因: choregraphe中不识别系统Path变量,因此不识别java,可以加入java的全路径,如下:
os.system(‘/var/persistent/home/nao/java/jre1.7.0_79/bin/java -jar /var/persistent/home/nao/java/xf_lib/xunfeiutf.jar’)

卡在java -jar /var/persistent/home/nao/java/xf_lib/xunfeiutf.jar

原因:
也许都集成在nao-bin程序中,调用的jar也集成,并非进程间通信。

解决办法:
测试通过方式3,调用jar,写一个文件,看是否输出

替代做法:

  1. python 调用jar,不采用进程间通信
  2. python直接调用c包(无音频前后端点检测)
  3. 采用多进程,新建一个进程,

编码问题

文件编码:
在eclipse中,

terminal显示编码:

要求是utf-8编码显示
sys.getdefaultencoding() 显示的是ascii

xunfeiwriternosocket.jar 在windows上写出来是好的,在小森上是乱码
考虑采用utf-8编码之后,再写文件

xunfei.jar python接收信号,并写出,是乱码
xunfeiutf.jar python接收信号,并写出,是乱码