2014-10-16 3 views
-8

음성 인식을 사용하여 사용자가 편지를 쓰는 맞춤법 게임을 만들고 싶습니다. 예를 들어, 사용자는 "S" "T" "A" "C" "K"라고 말합니다.글자를 인식 할 때 사용할 문법

나는 이것을 달성하기 위해 PocketSphinx를 사용하고 있습니다. 내 코드는 다음과 같습니다.

File modelsDir = new File(assetsDir, "models"); 
     recognizer = defaultSetup() 
       .setAcousticModel(new File(modelsDir, "hmm/en-us-semi")) 
       .setDictionary(new File(modelsDir, "dict/cmu07a.dic")) 
       .setRawLogDir(assetsDir).setKeywordThreshold(1e-20f) 
       .getRecognizer(); 
     recognizer.addListener(this); 

     // Create keyword-activation search. 
     recognizer.addKeyphraseSearch(KWS_SEARCH, KEYPHRASE); 
     // Create grammar-based searches. 
     File menuGrammar = new File(modelsDir, "grammar/menu.gram"); 
     recognizer.addGrammarSearch(MENU_SEARCH, menuGrammar); 
     File digitsGrammar = new File(modelsDir, "grammar/digits.gram"); 
     recognizer.addGrammarSearch(DIGITS_SEARCH, digitsGrammar); 
     // Create language model search. 
     File languageModel = new File(modelsDir, "lm/weather.dmp"); 
     recognizer.addNgramSearch(FORECAST_SEARCH, languageModel); 

사용자가 말하는 문자를 어떻게 인식합니까?

또는이를 수행하는 데 사용할 수있는 라이브러리가 있습니까?

+10

그리고 문제는 ... – csmckelvey

+1

이 당신을 도울하지만 [이 프로젝트] (HTTPS를 보라 것인지 확실하지 : // g ithub.com/fge/grappa) – fge

+0

"you can start start"부분부터 읽으십시오. http://cmusphinx.sourceforge.net/wiki/tutorialandroid –

답변

2

현재 인식기에 두 개의 문법을로드하고 있습니다. digits.gram에는 숫자가 들어 있습니다.

File menuGrammar = new File(modelsDir, "grammar/menu.gram"); 
recognizer.addGrammarSearch(MENU_SEARCH, menuGrammar); 
File digitsGrammar = new File(modelsDir, "grammar/digits.gram"); 

그래서 나는 당신이 할 수있는 것은 파일 letter.gram을 만들어 프로그램에로드 생각

#JSGF V1.0; 
public <Speech> = A | 
        B | 
        C; 

(이이기 때문에 문법 파일의 구문을 확인 할 수 있습니다 테스트하지 자바에 대한 스핑크스 어쩌면 pocketsphinx되지 않음)에 대한

File letterGrammar = new File(PUT IN THE CORRECT PATH); 
recognizer.addGrammarSearch(MENU_SEARCH, menuGrammar); 
2

JAVA를 사용하고 있으므로 프로젝트에서 가져와야하는 SCANNER라는 라이브러리가 있습니다.

import java.util.Scanner; 


public static void main(String[]arguments){ 

char x, y, z; 

Scanner input = new Scanner (System.in); 

System.out.print("Enter a letter"); 
x = input.nextChar(); 
y = input.nextChar(); 
z = input.nextChar(); 

} 

사용자가 작성해야하는 글자 수에 따라 루프를 사용해야합니다.

+0

음성 인식 라이브러리 인 Sphinx로 질문에 태그를 추가 한 사용자를 기반으로합니다 나는 스캐너가 그들이 찾고있는 것이라고 생각하지 않습니다. – Travis

+0

스캐너를 사용하는 것이 더 쉬울 것입니다. @Travis –

+0

음성 인식이 필요합니다. –