자바 온라인 음성 인식 실현

7917 단어 자바음성 인식
본 고 는 자바 가 온라인 음성 인식 을 실현 하 는 구체 적 인 방법 을 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
정보 개발 플랫폼 을 제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:식별 기능 만 중시 하기 때문에 화면 이 못 생 겼 어 요.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기