关于java语音的问题 谁弄过java读汉字,然后发音出来呢!现在看小说太累了,小自己写一个读小说的!标点符号不读,有英语能读出来最好! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主这想法很好,我觉得这个软件可以分为几部分1. 文本读取模块,作为输入端2. 语音引擎/语音库模块,提供中文发音3. 用户模块(界面、功能、日志、恢复阅读等)我认为选择一个合适的语音引擎,调试测试引擎接口API应该是最优先最重要的一步。 音视频处理需要安装jmf-2_1_1e-windows-i586.exe(java media framerwork)实例:import java.io.IOException;import java.util.Vector;import javax.media.CaptureDeviceInfo;import javax.media.CaptureDeviceManager;import javax.media.DataSink;import javax.media.Manager;import javax.media.MediaLocator;import javax.media.NoDataSinkException;import javax.media.NoProcessorException;import javax.media.Processor;import javax.media.control.StreamWriterControl;import javax.media.format.AudioFormat;import javax.media.protocol.DataSource;import javax.media.protocol.FileTypeDescriptor;/** * 采集音频 * @author Administrator */public class CaptureAudio { public static void main(String[] args) { CaptureDeviceInfo di = null; Processor p = null; StateHelper sh = null; // 查询CaptureDeviceManager,来定位你需要使用的媒体采集设备。 Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat(AudioFormat.LINEAR, 44100, 16, 2)); if (deviceList.size() > 0) { // 得到此设备的CaptureDeviceInfo实例。 di = (CaptureDeviceInfo) deviceList.firstElement(); } else // 找不到满足(linear, 44100Hz, 16 bit,stereo audio.)音频设备,退出。 System.exit(-1); try { // 获得MediaLocator,并由此创建一个Processor。 p = Manager.createProcessor(di.getLocator()); sh = new StateHelper(p); } catch (IOException e) { e.printStackTrace(); System.exit(-1); } catch (NoProcessorException e) { e.printStackTrace(); System.exit(-1); } // Configure the processor if (!sh.configure(10000)) { System.out.println("configure wrong!"); System.exit(-1); } // 定义待存储该媒体的内容类型(content type)。 p.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.WAVE)); // realize the processor. if (!sh.realize(10000)) { System.out.println("realize wrong!"); System.exit(-1); } // get the output of the processor DataSource source = p.getDataOutput(); // 定义存储该媒体的文件。 MediaLocator dest = new MediaLocator(new java.lang.String("file:///D:/Dvp/foo.wav")); // 创建一个数据池 DataSink filewriter = null; try { filewriter = Manager.createDataSink(source, dest); filewriter.open(); } catch (NoDataSinkException e) { e.printStackTrace(); System.exit(-1); } catch (IOException e) { e.printStackTrace(); System.exit(-1); } catch (SecurityException e) { e.printStackTrace(); System.exit(-1); } StreamWriterControl swc = (StreamWriterControl) p.getControl("javax.media.control.StreamWriterControl"); // 最大 5MB if (swc != null) swc.setStreamSizeLimit(5000000); try { filewriter.start(); } catch (IOException e) { e.printStackTrace(); System.exit(-1); } // 录制5秒钟 sh.playToEndOfMedia(5000); sh.close(); filewriter.close(); }} JMF自带的读的让人不能淡定,楼主可以找一下现在成熟的语音引擎,然后直接使用它的Java调用就好了。 eclipse开发web,新手指教 jquery实现分页技术 GUI,书上的例子 北京一家公司的题,谁看完谁哭~求高手~超级撒分 请教一个Jbuilder的问题!!!! db2服务器用的字符集是utf-8,客户端为windows XP中文版,请问jsp下怎么读取数据表中的中文字符? 普通的字符串数组排序,有什么简单的办法? 怎样设置自定义r g b的背景色 setBackground()? 天呀……谁能救救我呀……我学了一个的JAVA,既然一点反映都没有,我真的不知道怎么去学! 新人求救事件问题 swing,swt 或者转用 c++ 来开发客户端 艰难的决定? lucene 索引问题
1. 文本读取模块,作为输入端
2. 语音引擎/语音库模块,提供中文发音
3. 用户模块(界面、功能、日志、恢复阅读等)我认为选择一个合适的语音引擎,调试测试引擎接口API应该是最优先最重要的一步。
需要安装jmf-2_1_1e-windows-i586.exe(java media framerwork)
实例:import java.io.IOException;
import java.util.Vector;import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.DataSink;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoDataSinkException;
import javax.media.NoProcessorException;
import javax.media.Processor;
import javax.media.control.StreamWriterControl;
import javax.media.format.AudioFormat;
import javax.media.protocol.DataSource;
import javax.media.protocol.FileTypeDescriptor;/**
* 采集音频
* @author Administrator
*/
public class CaptureAudio {
public static void main(String[] args) {
CaptureDeviceInfo di = null;
Processor p = null;
StateHelper sh = null;
// 查询CaptureDeviceManager,来定位你需要使用的媒体采集设备。
Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat(AudioFormat.LINEAR, 44100, 16, 2));
if (deviceList.size() > 0) {
// 得到此设备的CaptureDeviceInfo实例。
di = (CaptureDeviceInfo) deviceList.firstElement();
} else
// 找不到满足(linear, 44100Hz, 16 bit,stereo audio.)音频设备,退出。
System.exit(-1);
try {
// 获得MediaLocator,并由此创建一个Processor。
p = Manager.createProcessor(di.getLocator());
sh = new StateHelper(p);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
} catch (NoProcessorException e) {
e.printStackTrace();
System.exit(-1);
}
// Configure the processor
if (!sh.configure(10000)) {
System.out.println("configure wrong!");
System.exit(-1);
}
// 定义待存储该媒体的内容类型(content type)。
p.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.WAVE));
// realize the processor.
if (!sh.realize(10000)) {
System.out.println("realize wrong!");
System.exit(-1);
}
// get the output of the processor
DataSource source = p.getDataOutput();
// 定义存储该媒体的文件。
MediaLocator dest = new MediaLocator(new java.lang.String("file:///D:/Dvp/foo.wav"));
// 创建一个数据池
DataSink filewriter = null;
try {
filewriter = Manager.createDataSink(source, dest);
filewriter.open();
} catch (NoDataSinkException e) {
e.printStackTrace();
System.exit(-1);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
} catch (SecurityException e) {
e.printStackTrace();
System.exit(-1);
}
StreamWriterControl swc = (StreamWriterControl) p.getControl("javax.media.control.StreamWriterControl");
// 最大 5MB
if (swc != null)
swc.setStreamSizeLimit(5000000);
try {
filewriter.start();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
// 录制5秒钟
sh.playToEndOfMedia(5000);
sh.close();
filewriter.close();
}
}