자바 온라인 음성 인식 실현
정보 개발 플랫폼 을 제3자 창고 로 이용 하 다.
먼저 정보 개발 플랫폼 에서 SDK 를 다운로드 해 야 합 니 다.인터넷 주 소 는'정보 개발 플랫폼입 니 다.이 SDK 들 은 모두 무료 입 니 다.물론 먼저 등록 해 야 합 니 다.SDK 에 해당 하 는 jar 가방 뿐만 아니 라 해당 하 는 demo 도 포함 되 어 있 으 니 참고 하 셔 도 됩 니 다.
우리 가 첫 번 째 SDK 를 다운로드 한 후에 개발 할 수 있 습 니 다.메시지 의 SDK 는 우리 에 게 상세 하고 강력 한 함수 지원 을 제공 해 주 었 습 니 다.다음은 코드 의 측면 에서 설명 하 겠 습 니 다.
코드
package myVoice;
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Parameter;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import com.iflytek.cloud.speech.RecognizerListener;
import com.iflytek.cloud.speech.RecognizerResult;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechRecognizer;
import com.iflytek.cloud.speech.SpeechUtility;
import com.iflytek.util.DebugLog;
import com.iflytek.util.JsonParser;
import com.iflytek.util.Version;
public class VoiceSpeech extends Frame implements ActionListener {
Button startBtn;
Button stopBtn;
TextArea textArea;
//
SpeechRecognizer speechRecognize;
private static final String DEF_FONT_NAME = " ";
private static final int DEF_FONT_STYLE = Font.BOLD;
private static final int DEF_FONT_SIZE = 30;
private static final int TEXT_COUNT = 100;
public VoiceSpeech() {
//
speechRecognize = SpeechRecognizer.createRecognizer();
//
startBtn = new Button("start");
stopBtn = new Button("stop");
textArea = new TextArea();
Panel btnPanel = new Panel();
Panel textPanel = new Panel();
// Button startBtn = new Button(" ");
//
startBtn.addActionListener(this);
stopBtn.addActionListener(this);
btnPanel.add(startBtn);
btnPanel.add(stopBtn);
textPanel.add(textArea);
add(btnPanel);
add(textPanel);
//
setLayout(new GridLayout(2, 1));
setSize(400, 300);
setTitle(" ");
setLocation(200, 200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == startBtn) {
textArea.setText("************* :");
if (!speechRecognize.isListening())
speechRecognize.startListening(recognizerListener);
else
speechRecognize.stopListening();
} else if (e.getSource() == stopBtn) {
speechRecognize.stopListening();
}
}
/**
*
*/
private RecognizerListener recognizerListener = new RecognizerListener() {
public void onBeginOfSpeech() {
// DebugLog.Log( "onBeginOfSpeech enter" );
// ((JLabel) jbtnRecognizer.getComponent(0)).setText(" ...");
// jbtnRecognizer.setEnabled(false);
}
public void onEndOfSpeech() {
DebugLog.Log("onEndOfSpeech enter");
}
/**
* . RecognizerResult , , Area
*/
public void onResult(RecognizerResult results, boolean islast) {
DebugLog.Log("onResult enter");
// json , com.iflytek.util.JsonParser
String text =
JsonParser.parseIatResult(results.getResultString());
// String text = results.getResultString();
// JsonParser json = new JsonParser();
// String newTest = json.parseIatResult(text);
// textArea.setText(newTest);
textArea.append(text);
text = textArea.getText();
if (null != text) {
int n = text.length() / TEXT_COUNT + 1;
int fontSize = Math.max(10, DEF_FONT_SIZE - 2 * n);
DebugLog.Log("onResult new font size=" + fontSize);
int style = n > 1 ? Font.PLAIN : DEF_FONT_SIZE;
Font newFont = new Font(DEF_FONT_NAME, style, fontSize);
textArea.setFont(newFont);
}
if (islast) {
iatSpeechInitUI();
}
}
public void onVolumeChanged(int volume) {
DebugLog.Log("onVolumeChanged enter");
if (volume == 0)
volume = 1;
else if (volume >= 6)
volume = 6;
// labelWav.setIcon(new ImageIcon("res/mic_0" + volume + ".png"));
}
public void onError(SpeechError error) {
DebugLog.Log("onError enter");
if (null != error) {
DebugLog.Log("onError Code:" + error.getErrorCode());
textArea.setText(error.getErrorDescription(true));
iatSpeechInitUI();
}
}
public void onEvent(int eventType, int arg1, int agr2, String msg) {
DebugLog.Log("onEvent enter");
}
};
/**
* ,
*/
public void iatSpeechInitUI() {
// labelWav.setIcon(new ImageIcon("res/mic_01.png"));
// jbtnRecognizer.setEnabled(true);
// ((JLabel) jbtnRecognizer.getComponent(0)).setText(" ");
}
public static void main(String[] args) {
//
StringBuffer param = new StringBuffer();
param.append( "appid=" + Version.getAppid() );
// param.append( ","+SpeechConstant.LIB_NAME_32+"=myMscName" );
SpeechUtility.createUtility( param.toString() );
VoiceSpeech t = new VoiceSpeech();
}
}
코드 분석1.SpeechRecognizer 류,음성 인식 류,음성 인식,받아쓰기,문법 인식 기능 을 포함한다.이 클래스 는 하나의 예 를 사용 합 니 다.호출 자 는 이 클래스 의 대상 을 사용 합 니 다.createRecognizer()를 통 해 대상 을 한 번 만 든 후에 이 대상 을 계속 사용 할 수 있 습 니 다.destroy()를 호출 하여 하나의 대상 을 없 앨 때 까지 사용 할 수 있 습 니 다.호출 자 는 getRecognizer()를 통 해 현재 만 든 단일 예 를 가 져 올 수 있 습 니 다.우 리 는 처음에 패 키 지 를 가 져 온 다음 에 음성 인식 류 를 설명 한 다음 에 VoiceSpeech 류 의 구조 기 에서 초기 화 합 니 다.
2.SpeechRecognizer 류 에는 음성 인식 에 관 한 방법 이 많 습 니 다.
(1)startListening 방법 은 음성 인식 을 시작 합 니 다.그 방법의 매개 변 수 는 리 셋 함수 입 니 다.이 방법 은 다른 종류의 Recognizer Listener 성명 의 인 스 턴 스 입 니 다.익명 내부 클래스 에서 관건 적 인 방법 을 다시 쓰 는 것 입 니 다.이 를 통 해 우리 가 원 하 는 결 과 를 onResult 방법 에서 다시 쓰 겠 습 니 다.식별 결 과 를 json 으로 분석 한 후(식별 결 과 는 기본적으로 json 형식)텍스트 표시 줄 에 순서대로 추가 한 후 텍스트 표시 줄 의 내용 에 대해 문자 글꼴 크기 등 을 설정 합 니 다.
(2)stopListening 방법 은 녹음 이 끝 난 후에 이 방법 을 호출 하여 녹음 결 과 를 네트워크 를 통 해 원 격 식별 플랫폼 에 전송 하여 분석 하고 분석 이 끝 난 후에 분석 결 과 를 전송 한다.
3.main 방법 에서 먼저 SpeechUtility.create Utility 를 진행 해 야 합 니 다.이것 은 신호 SDK 의 초기 화 입 니 다.원 격 연결 신호 인식 플랫폼 에 해당 합 니 다.자바 는 아직 오프라인 식별 을 지원 하지 않 기 때문에 식별 방법 을 호출 하기 전에 반드시 신호 개발 플랫폼 을 연결 해 야 합 니 다.이 방법의 역할 은 바로 이 렇 습 니 다.그 매개 변 수 는 서로 다른 식별 버 전 입 니 다.
4.많은 방법 이 정보 제공 이기 때문에 해당 하 는 가방 을 가 져 와 야 합 니 다.
구체 적 으로 다음 과 같다.
import com.iflytek.cloud.speech.RecognizerListener;
import com.iflytek.cloud.speech.RecognizerResult;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechRecognizer;
import com.iflytek.cloud.speech.SpeechUtility;
import com.iflytek.util.DebugLog;
import com.iflytek.util.JsonParser;//json
import com.iflytek.util.Version;//
이게 SDK 에 다 있어 요.최종 적 결과
ps:식별 기능 만 중시 하기 때문에 화면 이 못 생 겼 어 요.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.