0
저는 매우 새롭게 다녀 왔습니다.
는 내가하고 싶은 것은 : 그것은 인정포켓 스핑크스에 새 키워드를 정의하십시오.
- 은 사용자가 엔진
- 을 텍스트로 음성에서 KEYWORD를 정의하기, 내 응용 프로그램은 내가 PocketSphinix를 읽고 수없는 무언가를
을한다 내 찾기, 도 어렵다는 것을 알았 기 때문에 나는 그것을 바꾸고 기본 것을 사용하는 것을 선호한다.
내 문제는 다음과 같습니다. 어떻게 * .gram 파일에 새 키워드 "my phone"을 정의 할 수 있습니까?
이 내 코드입니다 - 나는 그것을 here했다 :
import android.app.Activity;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.SpeechRecognizer;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import edu.cmu.pocketsphinx.Assets;
import edu.cmu.pocketsphinx.Hypothesis;
import edu.cmu.pocketsphinx.SpeechRecognizerSetup;
/**
* Created by Mina Joon jooni on 6/4/2016.
*/
public class PracticeActivity extends Activity implements RecognitionListener, edu.cmu.pocketsphinx.RecognitionListener {
private static final String DIGITS_SEARCH = "digits";
private edu.cmu.pocketsphinx.SpeechRecognizer recognizer;
@Override
public void onCreate(Bundle state)
{
super.onCreate(state);
setContentView(R.layout.practice);
((TextView) findViewById(R.id.caption_text)).setText("Preparing the recognizer");
try
{
Assets assets = new Assets(PracticeActivity.this);
File assetDir = assets.syncAssets();
setupRecognizer(assetDir);
}
catch (IOException e)
{
// oops
}
((TextView) findViewById(R.id.caption_text)).setText("Say up, down, left, right, forwards, backwards");
reset();
}
@Override
public void onPartialResult(Hypothesis hypothesis)
{//DO STH
}
@Override
public void onResult(Hypothesis hypothesis)
{
((TextView) findViewById(R.id.result_text)).setText("");
if (hypothesis != null)
{
String text = hypothesis.getHypstr();
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(Exception e) {
}
@Override
public void onTimeout() {
}
@Override
public void onReadyForSpeech(Bundle params) {
}
@Override
public void onBeginningOfSpeech()
{
}
@Override
public void onRmsChanged(float rmsdB) {
}
@Override
public void onBufferReceived(byte[] buffer) {
}
@Override
public void onEndOfSpeech()
{
reset();
}
@Override
public void onError(int error) {
}
@Override
public void onResults(Bundle results) {
}
@Override
public void onPartialResults(Bundle partialResults) {
}
@Override
public void onEvent(int eventType, Bundle params) {
}
private void setupRecognizer(File assetsDir) throws IOException {
File modelsDir = new File(assetsDir, "models");
recognizer = SpeechRecognizerSetup.defaultSetup()
.setAcousticModel(new File(modelsDir, "en-us-ptm"))
.setDictionary(new File(modelsDir, "cmudict-en-us.dict"))
.setRawLogDir(assetsDir).setKeywordThreshold(1e-20f)
.getRecognizer();
recognizer.addListener(this);
File digitsGrammar = new File(modelsDir, "grammar/digits.gram");
recognizer.addKeywordSearch(DIGITS_SEARCH, digitsGrammar);
}
private void reset()
{
recognizer.stop();
recognizer.startListening(DIGITS_SEARCH);
}
}
어떻게 처음을 할 수 있습니까?
도와주세요!
두 줄은 실제로 비슷하게 보입니다. 나는 차이점이 두 번있는 것을보아야 만했다 : 메소드의 이름에서 .addGrammarSearch'와'.addKeywordSearch'. 나는 당신이 당신의 대답에 그것에 대해 정교 할 수 있었다고 생각합니다. 그건 그렇고 환영합니다! ;) –