Contents

Configure julius accuracy on Raspberry Pi

Environment

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ uname -a
Linux rpi4 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

$ julius --version
JuliusLib rev.4.6 (fast)

Prioritize USB microphone

Check sound device

1
2
3
4
5
$ cat /proc/asound/modules
 0 snd_bcm2835
 1 vc4
 2 snd_usb_audio
 3 vc4

Prioritize USB Mic

1
$ sudo vi /lib/modprobe.d/aliases.conf
1
2
3
4
5
6
7
# Comment out 
#options snd-usb-audio index=-2

# Insert
options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1

Reboot raspberry Pi

1
sudo reboot

Check sound device again

1
2
3
4
5
$ cat /proc/asound/modules
 0 snd_usb_audio
 1 snd_bcm2835
 2 vc4
 3 vc4

Create original dictionary

Create sample.yomi (tab delimited, space characters are not allowed. )

sample.yomi

1
2
3
4
5
鬼太郎  きたろう
バカボン        ばかぼん
マーシー        まーしー
ウッシー        うっしー
花子    はなこ

Convert sample.yomi to sample.dic by yomi2voca.pl in Julius. In my case, the full path is ~/repo/julius-speech/julius/gramtools/yomi2voca/yomi2voca.pl

1
cat sample.yomi | ~/repo/julius-speech/julius/gramtools/yomi2voca/yomi2voca.pl > sample.dic

sample.dic

1
2
3
4
5
鬼太郎	k i t a r o u
バカボン	b a k a b o N
マーシー	m a: sh i:
ウッシー	u q sh i:
花子	h a n a k o

Configuration file

sample.jconf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
-w sample.dic	#単語辞書ファイル。作成した「sample.dic」を指定
-v model/lang_m/bccwj.60k.htkdic 	#N-gram、または文法用の単語辞書ファイルを指定
-h model/phone_m/jnas-tri-3k16-gid.binhmm	 #使用するHMM定義ファイル
-hlist model/phone_m/logicalTri	 #HMMlistファイルを指定する
-n 3		#n個の文仮説数が見つかるまで検索を行う。3〜5。
-output 1	#見つかったN-best候補のうち、結果として出力する個数
#-input mic	#マイク使用 引数で指定している場合は不要
#-input oss	#オープンサウンドシステム使用
-rejectshort 1000 #検出された入力時間(msec)が閾値以下なら棄却 
-lv 1000	#入力の振幅レベルの閾値(0~32767)
-fvad 1

Run it!

The simplest usage for this is:

1
julius -C sample.jconf -input mic -demo

If you want to run a process and open socket port for getting the word dictation result,

1
julius -C sample.jconf -input mic -module

I embed this as a local word dictation service. If the service dictate a keyword (in this example, “ウッシー”), that kicks the following process (in my case, calling a client service for querying online chat services)

The demo vide is in the below link

https://youtube.com/shorts/LPZS0qIwn_s

References