5.6 Lib (Android) - GiGAGenie-VoiceKit/UserGuide GitHub Wiki
- OllehSpeech.jar - ์์ฑ์ธ์์ ๊ตฌํํ๋ ํด๋์ค๋ฅผ Exportํ jarํ์ผ
- Libnetworkasr.so - ์๋ฒ์ ํต์ ์ ์ ๋ดํ์ฌ ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ
- Libspeexcodec.so - ์๋ฒ์ ํต์ ์ ์ฌ์ฉํ๋ ์์ฑ ์ฝ๋ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Ping.so - ๋คํธ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์์ฑ ๊ฒ์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์์ ์ ํ๋ก์ ํธ์ ๋จผ์ OllehSpeech.jarํ์ผ์ ์ถ๊ฐํด์ผ ํ๋ฉฐ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์๋ 2๊ฐ์ง์ด๋ค
-
ํ๋ก์ ํธ์ ํฌํจ ํ๋ก์ ํธ์ ํด๋๋ฅผ ํ๋ ์์ฑํ๊ณ ํด๋์ OllehSpeech.jar ํ์ผ์ ๋ณต์ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ์ โBuild Pathโ์์ โAdd JARsโ ๋ฒ ํผ์ ํตํด jarํ์ผ์ ์ถ๊ฐํ๋ค.
-
ํ๋ก์ ํธ ์ธ๋ถ์์ ์ถ๊ฐ OllehSpeech.jarํ์ผ์ ํ๋ ๋๊ณ ์ฌ๋ฌ ํ๋ก์ ํธ์์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๊ณ ์ ํ ๊ฒฝ์ฐ OllehSpeech.jarํ์ผ์ ํน์ ํด๋์ ๋ณต์ฌํ ํ ํ๋ก์ ํธ์ โBuild Pathโ์์ โAdd External JARsโ ๋ฒํผ์ ํตํด jarํ์ผ์ ์ถ๊ฐํ๋ค.
-
๋คํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์์ฑ์ฝ๋ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ก์ ํธ๋ด์ libs\armeabiํด๋๋ฅผ ์์ฑํ๊ณ ์์ฑ๋ ํด๋ ๋ด์ ๋ณต์ฌํ๋ค. ๋ณต์ฌ ํ ์ดํด๋ฆฝ์ค์ ํ๋ก์ ํธ์์ โRefreshโ๋ฅผ ์ ํํ๋ฉด ์ถ๊ฐํ ํ์ผ์ด ํ๋ก์ ํธ์ ๋ณด์ธ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ํ๊ธฐ ์ํด ์ธํฐ๋ท ์ ์, ์์ฑ๋ น์ ๋ฑ์ ๊ถํ์ด ์์ด์ผ ํ๋ฏ๋ก ๋ฐ๋์ ์๋ ๋ด์ฉ์ด ์ถ๊ฐ๋์ด์ผ ํ๋ค.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
SpeechRecognition : ์์ฑ์ธ์ function์ ์ ์ํ ํด๋์ค
-
Initialize ์ค๋ช : ์ด๊ธฐํ ํ๋ผ๋ฏธํฐ context : Acitivity์ Context iServiceType : KT๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ ์๋น์ค ํค iMediaType : NetworkASR ๊ฐ Handler : ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ trIPAddress : ์์ฑ์ธ์ ์๋ฒ ์ฃผ์, URL์ผ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก ์๋ ๋ณํ๋จ iPort : ์์ฑ์ธ์ ์๋ฒ ํฌํธ ๋ฆฌํด๊ฐ : boolean
-
setAuth ์ค๋ช : ์์ฑ์ธ์ ํค Auth ์ธํ ํ๋ผ๋ฏธํฐ svcid : ์๋น์คํค ์ธ์ฆ์ svcId ์ ๋๋ค keyid : ์๋น์คํค ์ธ์ฆ์ keyId ์ ๋๋ค ๋ฆฌํด๊ฐ : ์์
-
startRecognition ์ค๋ช : ์์ฑ์ธ์ ์์ ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : boolean
ex)
mSR = new SpeechRecognition();
if (mSR.initialize(this, iServiceType, iMediaType, RecorderHandler,
SESSION_IP, SESSION_PORT) == true) {
setAuth(svcid, keyed);
if (mSR.startRecognition() == false)
mSR.destroy();
finish();
else {
}
}
else finish();
-
destroy ์ค๋ช : ๋ด๋ถ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๊ฒ์ด๋ฉฐActivity ์ข ๋ฃ์์ ํธ์ถํด์ผ ํจ ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : ์์
-
checkRetry ์ค๋ช : ์์ฑ์ธ์ ์คํจ ํ ๋ฐ๋ก ์ฌ์๋ ํ ๊ฒฝ์ฐ ๋ด๋ถ๋ฅผ ์ด๊ธฐํ ์์ผ์ค ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : ์์
ex)
mSR.checkRetry();
m_waveView.clearWave();
m_btnRetry.setVisibility(View.GONE);
setStatus(SpeechRecognition.ST_INIT,0);
mSR.startRecognition();
-
checkNormalResult ์ค๋ช : ์์ฑ์ธ์ ์๋ฃ ํ ์ผ๋ฐ ๊ฒฐ๊ณผ์ธ์ง ์ธ๋ถ ์ฐ๋ ํ์ํ ๊ฒ์ธ์ง ํ์ธํด์ค, true์ผ ๊ฒฝ์ฐ ์ธ๋ถ ์ฐ๋์ ํด์ฃผ์ด์ผ ํ๋ค ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : boolean
-
getResultXML ์ค๋ช : ์์ฑ์ธ์ ๊ฒฐ๊ณผ XML ๋ฌธ์์ด์ ๋๋ ค์ค, ์ฑ์์ XML์ ํ์ฑํ์ฌ ์ฒซ๋ฒ์งธ ๊ฒฐ๊ณผ๊ฐ โNOISEโ์ผ ๊ฒฝ์ฐ ์ก์์ผ๋ก ์ธํด ์์ฑ์ธ์ ๊ฒฐ๊ณผ ์คํจํ ๊ฒฝ์ฐ์ด๋ฉฐ ์ฌ์๋ํ๊ฑฐ๋ ์ข ๋ฃํด์ผ ํจ ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : byte[]
-
getExternalExchangeURL ์ค๋ช : ์ธ๋ถ ์ฐ๋ URL์ ์ป์ด์จ๋ค ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : string
-
stopVoiceTask ์ค๋ช : ์์ฑ ์ ์ก ์ค์ง ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : ์์
-
stopVoiceRecord ์ค๋ช : ๋ น์ ๋ฐ ์์ฑ ์ ์ก ์ค์ง ํ๋ผ๋ฏธํฐ : ์์ ๋ฆฌํด๊ฐ : ์์
์์ฑ์ธ์์ด๋ ํฉ์ฑ ์ค์๋ ์งํ์ํ ๋ฐ ๊ฒฐ๊ณผ๊ฐ initializeํจ์ ํธ์ถ ์ ์ ๋ฌํ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํตํด์ ์ ๋ฌ๋๋ฉฐ ๋ฉ์์ง์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ ์ ํ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
ex)
Handler eventHandler = new Handler()
{
@Override
public void handleMessage(Message msg) {
switch(msg.what)
{
case NetworkASR.MESSAGE_SUCCESS_RECOGNIZE:
//์ธ์ ์ฑ๊ณต -> Task ์ค์ง ํ ๊ฒฐ๊ณผ ํ์ฑ
break;
case NetworkASR.MESSAGE_CONNECT_CANNOT:
//์๋ฒ ์ ์ ์คํจ -> Task ์ค์ง
break;
case NetworkASR.MESSAGE_FAILURE:
//์คํจ -> Task ์ค์ง
break;
case NetworkASR.MESSAGE_READY_OK:
//์๋ฒ์ ์ ์๋ฃํ ๋
น์์ด ์์๋จ
break;
case NetworkASR.MESSAGE_START_RECOGNIZE:
//์ธ์ ์์๋จ
break;
case NetworkASR.MESSAGE_FAILED_RECOGNIZE:
//์ธ์ ์คํจ๋จ
break;
case NetworkASR.MESSAGE_START_RECORD:
//๋
น์์ด ์์๋จ -> Task ์ค์ง
break;
case NetworkASR.MESSAGE_DISPLAY_WAVE:
//ํํ์ ๊ทธ๋ฆผ
break;
}
- NetworkASR.MESSAGE_CONNECT_CANNOT : ์๋ฒ์ ์ ์์ด ๋ถ๊ฐ๋ฅํ์ฌ ๋ฐ์ -> ์งํ์ค์ธ Task๋ฅผ ์ค์ง์์ผ์ผ ํจ
- NetworkASR.MESSAGE_READY_OK : ์๋ฒ์ ์ ์์ด ์๋ฃ๋์ด ์์ฑ ์ธ์์ ์ํ ๋ น์์ ์์
- NetworkASR. MESSAGE_START_RECOGNIZE : ์๋ฒ ์ธก์์ ์์ฑ ์์ ์ด ์๋ฃ๋๊ณ ์์ฑ ์ธ์์ ์์
- NetworkASR.MESSAGE_FAILED_RECOGNIZE : ์๋ฒ ์ธก์์ ์์ฑ ์์ ์ด ์๋ฃ๋๊ณ ์์ฑ ์ธ์์ด ์คํจ
- NetworkASR.MESSAGE_SUCCESS_RECOGNIZE : ์๋ฒ ์ธก์์ ์์ฑ ์์ ์ด ์๋ฃ๋๊ณ ์์ฑ ์ธ์์ด ์๋ฃ -> ์งํ์ค์ธ Task๋ฅผ ์ค์ง์์ผ์ผ ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ฑ ํด์ผํจ
- NetworkASR.MESSAGE_FAILURE : ๋์์ค ๋ฐ์ํ๋ ์ค๋ฅ(๋คํธ์ ์ค๋ฅ, ๋๋ฐ์ด์ค์ค๋ฅ ๋ฑ) ํต๋ณด -> ์งํ์ค์ธ Task๋ฅผ ์ค์ง์์ผ์ผ ํจ
- NetworkASR.MESSAGE_START_RECORD : ์์ฑ๋ น์์ด ์์๋จ
- NetworkASR.MESSAGE_DISPLAY_WAVE : ํํ์ ๊ทธ๋ฆด ์ ์๋๋ก ์์ฑ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค๋ค.
- msg.getData().getByteArray("PCM") : ์์ฑ๋ฐ์ดํฐ msg.arg1 :๋ฐ์ดํฐ์ ํฌ๊ธฐ. ์์ฑ๋ฐ์ดํฐ๋ 16๋นํธ ํฌ๊ธฐ์ด๋ฉฐ shortํ์ ์ ๋ฐฐ์ด๋ก ์บ์คํ ํ์ฌ ์ฌ์ฉํจ
- NetworkASR.UNKNOWN_STATUS : ๋ ธํฐ ์์ด ์ข ๋ฃ ๋์์ ๊ฒฝ์ฐ
- NetworkASR.CANT_CONNECT_STATUS : ์๋ฒ ์ ์ ์คํจ
- NetworkASR.READY_STATUS : ์๋ฒ ์ ์ ํ ๋ น์์ด ์์๋์์
- NetworkASR.TIMEOUT_STATUS : ์๋ฒ ์ ์ ํ ๋ น์์ด ์งํ๋์์ผ๋ฉฐ ์์ฑ์ด ์ธ์ ์๋์ด ํ์์์ ๋ฐ์
- NetworkASR.START_RECOG_STATUS : ์๋ฒ ์ ์ ํ ๋ น์์ด ์งํ๋์์ผ๋ฉฐ ์์ฑ์ด ๊ฒ์ถ๋์ด ์ธ์์ด ์์๋์์
- NetworkASR.FAIL_RECOG_STATUS : ์์ฑ์ธ์์ด ์งํ๋์์ผ๋ฉฐ ๊ฒฐ๊ณผ๊ฐ ์คํจ์
- NetworkASR.FAILURE_STATUS : ์์ฑ์ธ์์ด ์งํ๋์์ผ๋ฉฐ ๊ฒฐ๊ณผ๊ฐ ์ฑ๊ณต์
- NetworkASR.FAILURE_AUTH : ์์ฑ์ธ์ ์ธ์ฆ์ด ์คํจ์