【トラブル】 Julius でのトラブルシューティング

■ はじめに

 * 以下の関連記事などで発生した時のトラブルシューティング
https://blogs.yahoo.co.jp/dk521123/37454369.html

■ エラー「Error: failed to bind socket」が表示される

 * python実行後、以下「エラー内容」が表示される

エラー内容

Error: failed to bind socket
failed to begin input stream

原因

 * ポート「10500」を掴んでいるプロセスがいる
解決案
# ポート10500のPIDを探す
sudo netstat -anp | grep 10500
tcp        0      0 0.0.0.0:10500           0.0.0.0:*               LISTEN      1821/julius 

# kill -9 【PID】でプロセスをキルする
kill -9 1821

■ エラー「UnicodeEncodeError: 'ascii' codec can't encode characters」が表示される

 * str(client.recv(1024).decode('utf-8'))で読み取り時に、以下のエラー内容が表示される

エラー内容

Traceback (most recent call last):
  File "hello_raspi.py", line 99, in <module>
    main()
  File "hello_raspi.py", line 89, in main
    data += str(client.recv(1024).decode('utf-8'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 360-362: ordinal not in range(128)

解決案

 * Python文字コードutf-8 に設定する。
  => sitecustomize.py に  utf-8 を設定
確認方法
$ python
Python 2.7.13 (default, Jan 19 2017, 14:48:08) 
[GCC 6.3.0 20170124] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'ascii' << これを utf-8 に変更する必要がある
>>> exit();

具体的に行ったこと

# 念のため、バックアップ
sudo cp /usr/lib/python2.7/sitecustomize.py /usr/lib/python2.7/sitecustomize.py.orig

sudo vi /usr/lib/python2.7/sitecustomize.py
-=[全面的に書き換え]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
import sys
sys.setdefaultencoding('utf-8')
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$ python
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'  << utf-8 に変更されたことを確認
>>> exit();

参考文献

http://kenzo0107.hatenablog.com/entry/2016/02/16/110854
http://d.hatena.ne.jp/omiyan/20110105/p1

関連記事

Raspberry PI】Julius + Open JTalkで非ネット環境でのなんちゃってAIスピーカー

https://blogs.yahoo.co.jp/dk521123/37454369.html