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.FloatCont