java自制语音识别,JAVA作的语音识别

JAVA做的语音识别

我想用java实现一个 语音识别的软件。比如我说一句‘hello’,软件就会采集我说话的特征值,并记录下来,并输出相应值。当别人说‘hello’的时候,采集其特征值,并与我的比较,相同就通过,不同就继续输入。声音的采集主要通过麦克风实现。

分享到:

------解决方案--------------------

声音识别是一个专门的技术,其实就是对声音波形的判断。如果你想用Java实现的话,那你必须先对Java的声音输入输出的操作有基本的了解。下面是一个简单的录音并输出的程序。录音的时候,每次读取数据是存放在buffer这个字节数组之中的,再把它输出。而你,是要识别的话,就是从这个数组中提取信息。那么这个数组的结构是什么样的呢。对这个程序而言,采用16位双声道录音,那么这个数组,每2位拼起来,是一个采样值,这个值即是声音的响度。将2个字节视为一个单位的话,由于是双声道,就是说,两个单位一组,一个是左声道,一个是右声道,交替录入的。

import java.io.*;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.SourceDataLine;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.FloatControl;

import javax.sound.sampled.TargetDataLine;

public class RecordAndPlay {

volatile int divider;

public RecordAndPlay(){

Play();

}

public static void main(String[] args) {

new RecordAndPlay();

}

//播放音频文件

public void Play() {

try {

AudioFormat audioFormat =

//                    new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100F,

//                    8, 1, 1, 44100F, false);

new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100F, 16, 2, 4,

44100F, true);

DataLine.Info info = new DataLine.Info(TargetDataLine.class,

audioFormat);

TargetDataLine targetDataLine = (TargetDataLine) AudioSystem.getLine(info);

你可能感兴趣的:(java自制语音识别)