- 浏览: 361433 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (176)
- struts2 (4)
- javascript (9)
- database (11)
- hibernate (11)
- java (36)
- CSS (1)
- wap (8)
- html (5)
- spring (3)
- 操作系统 (9)
- xml (0)
- eclipse/myeclipse (6)
- freemarker (2)
- jsp+servlet (4)
- fckeditor (1)
- Linux (12)
- tomcat (4)
- SNMP (2)
- Loadrunner (1)
- php (0)
- 版本控制 (1)
- android (3)
- pki (7)
- jquery (4)
- webservice (4)
- ipad (1)
- 开发工具 (1)
- jslt (1)
- 连接池 (6)
- javaApi (1)
- 学习笔记 (6)
- eclipse (2)
最新评论
-
宋建勇:
nice
keytool详解 -
1122334455aabb:
java int,byte、char之间的相互转化,更多内容参 ...
java中byte 与16进制字符相互转换 -
01jiangwei01:
CA[i >>> 18 & 0x3f ...
使用JAVA数字证书做数字签名认证 -
sjp524617477:
good
keytool详解 -
whlngn:
输出结果我只想取汉字,而不要后面的数字,应该如何实现,求回答
配置paoding analysis
import javax.swing.JFrame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Toolkit;
import javax.swing.JPanel;
import java.awt.event.ActionListener;
import javax.sound.sampled.AudioInputStream;
import javax.swing.JButton;
import java.io.File;
import java.util.Vector;
import java.awt.BorderLayout;
import javax.swing.border.EmptyBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.BoxLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.TargetDataLine;
import javax.sound.sampled.AudioSystem;
import java.io.IOException;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
public class Test extends JPanel implements ActionListener {
final int bufSize = 16384;
Capture capture = new Capture();
AudioInputStream audioInputStream;
JButton captB;
String fileName = "untitled";
String errStr;
double duration, seconds;
File file;
Vector lines = new Vector();
public Test() {
setLayout(new BorderLayout());
EmptyBorder eb = new EmptyBorder(5, 5, 5, 5);
SoftBevelBorder sbb = new SoftBevelBorder(SoftBevelBorder.LOWERED);
setBorder(new EmptyBorder(5, 5, 5, 5));
JPanel p1 = new JPanel();
p1.setBorder(sbb);
p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));
JPanel buttonsPanel = new JPanel();
buttonsPanel.setBorder(new EmptyBorder(10, 0, 5, 0));
captB = addButton("Record", buttonsPanel, true);
p1.add(buttonsPanel);
add(p1);
}
public void open() {
}
public void close() {
if (capture.thread != null)
captB.doClick(0);
}
private JButton addButton(String name, JPanel p, boolean state) {
JButton b = new JButton(name);
b.addActionListener(this);
b.setEnabled(state);
p.add(b);
return b;
}
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj.equals(captB)) {
if (captB.getText().startsWith("Record")) {
file = null;
capture.start();
fileName = "untitled";
captB.setText("Stop");
} else {
lines.removeAllElements();
capture.stop();
captB.setText("Record");
}
}
}
public void createAudioInputStream(File file, boolean updateComponents) {
if (file != null && file.isFile()) {
try {
this.file = file;
errStr = null;
audioInputStream = AudioSystem.getAudioInputStream(file);
fileName = file.getName();
long milliseconds = (long) ((audioInputStream.getFrameLength() * 1000) /
audioInputStream.getFormat().getFrameRate());
duration = milliseconds / 1000.0;
if (updateComponents) {
}
} catch (Exception ex) {
reportStatus(ex.toString());
}
} else {
reportStatus("Audio file required.");
}
}
public void saveToFile(String name, AudioFileFormat.Type fileType) {
if (audioInputStream == null) {
reportStatus("No loaded audio to save");
return;
} else if (file != null) {
createAudioInputStream(file, false);
}
// reset to the beginnning of the captured data
try {
audioInputStream.reset();
} catch (Exception e) {
reportStatus("Unable to reset stream " + e);
return;
}
File file = new File(fileName = name);
try {
if (AudioSystem.write(audioInputStream, fileType, file) == -1) {
throw new IOException("Problems writing to file");
}
} catch (Exception ex) {
reportStatus(ex.toString());
}
}
private void reportStatus(String msg) {
if ((errStr = msg) != null) {
System.out.println(errStr);
}
}
class Capture implements Runnable {
TargetDataLine line;
Thread thread;
public void start() {
errStr = null;
thread = new Thread(this);
thread.setName("Capture");
thread.start();
}
public void stop() {
thread = null;
}
private void shutDown(String message) {
if ((errStr = message) != null && thread != null) {
thread = null;
captB.setText("Record");
System.err.println(errStr);
}
}
public void run() {
duration = 0;
audioInputStream = null;
// get an AudioInputStream of the desired format for playback
AudioFormat.Encoding encoding = AudioFormat.Encoding.PCM_SIGNED;
// define the required attributes for our line,
// and make sure a compatible line is supported.
// float rate = 44100f;
// int sampleSize = 16;
// String signedString = "signed";
// boolean bigEndian = true;
// int channels = 2;
float rate = 8000f;
int sampleSize = 8;
String signedString = "signed";
boolean bigEndian = true;
int channels = 1;
AudioFormat format = new AudioFormat(encoding, rate, sampleSize,
channels, (sampleSize / 8) * channels, rate, bigEndian);
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
if (!AudioSystem.isLineSupported(info)) {
shutDown("Line matching " + info + " not supported.");
return;
}
// get an AudioInputStream of the desired format for playback
try {
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format, line.getBufferSize());
} catch (LineUnavailableException ex) {
shutDown("Unable to open the line: " + ex);
return;
} catch (SecurityException ex) {
shutDown(ex.toString());
return;
} catch (Exception ex) {
shutDown(ex.toString());
return;
}
// play back the captured audio data
ByteArrayOutputStream out = new ByteArrayOutputStream();
int frameSizeInBytes = format.getFrameSize();
int bufferLengthInFrames = line.getBufferSize() / 8;
int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
byte[] data = new byte[bufferLengthInBytes];
int numBytesRead;
line.start();
while (thread != null) {
if ((numBytesRead = line.read(data, 0, bufferLengthInBytes)) == -1) {
break;
}
out.write(data, 0, numBytesRead);
}
// we reached the end of the stream. stop and close the line.
line.stop();
line.close();
line = null;
// stop and close the output stream
try {
out.flush();
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
// load bytes into the audio input stream for playback
byte audioBytes[] = out.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(audioBytes);
audioInputStream = new AudioInputStream(bais, format,
audioBytes.length / frameSizeInBytes);
long milliseconds = (long) ((audioInputStream.getFrameLength() * 1000) / format
.getFrameRate());
duration = milliseconds / 1000.0;
try {
audioInputStream.reset();
} catch (Exception ex) {
ex.printStackTrace();
return;
}
saveToFile("untitled.wav", AudioFileFormat.Type.WAVE);
}
}
public static void main(String[] args) {
Test test = new Test();
test.open();
JFrame f = new JFrame("Capture");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.getContentPane().add("Center", test);
f.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int w = 720;
int h = 340;
f.setLocation(screenSize.width / 2 - w / 2, screenSize.height / 2 - h
/ 2);
f.setSize(w, h);
f.show();
}
}
发表评论
-
常用排序算法小记
2012-06-29 07:59 965转自:http://easense2009.iteye.com ... -
抽象类与接口
2012-06-07 13:47 809java中只可以继承一个类却可以继承多个接口。一个抽象 ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-05-18 09:36 655最近的机器内存又爆满了,除了新增机器内存外,还应该好好revi ... -
Runtime.getRuntime().exec(...)使用方法
2011-01-25 11:06 3317如果想要了解更多的信息,参阅代码里面给的链接 下面是这个正确的 ... -
使用poi一步一步建立报表 (excel操作)
2011-01-08 20:21 1627... -
Apache POI HSSF读写Excel总结
2011-01-08 18:03 1370Apache POI HSSF和XSSF读写EXCEL总结 H ... -
JNLP介绍
2010-12-05 15:04 1906原文地址:http://blog.csdn.net/yq7 ... -
利用反射私有属性/方法进行设置/调用
2010-12-03 08:35 1157因一时兴起看了一些有关 Java 反射( Reflection ... -
如何编写高效率java代码
2010-09-08 12:38 1518如何编写高效率Java 规则1 用时间频度来确定异常情况 ... -
深入理解Java加载类的机制
2010-09-07 22:32 1157这里从三个方面讲述java classloader ... -
Java 动态加载类
2010-09-07 22:29 2313Java 动态加载类 收 ... -
简单例子演示如何进行类的热加载(Hot Deployment)
2010-09-07 22:13 1734简单例子演示如何进行 ... -
ResourceBundle与Properties两个类的区别
2010-08-26 14:09 1633这两个类都是读取properties格式的文件的,而Prope ... -
log4j多文件配置
2010-08-26 10:07 1531log4j.rootCategory=INFO, CONSOL ... -
java获取properties 配置文件
2010-08-26 09:21 1788根据网上的例子总结了一下。 其中cache.p ... -
Class.forName与new 得区别
2010-08-13 15:45 1097Class.forName(xxx.xx.xx) 返回一个类 ... -
HttpURLConnection简单用法
2010-08-04 15:00 1625HttpURLConnection为javaAPI提 ... -
java中byte 与16进制字符相互转换
2010-07-27 13:53 7480Java中byte用二进制表示占用8位,而我们知道16进制的每 ... -
使用Axis在Tomcat下发布Webservice操作指南
2010-06-21 12:58 2499最近在工作过程中总是需要向其它项目组提供Webservice ... -
jdk安装
2010-06-12 21:41 14781.1 获取 JDK Java 的 ...
相关推荐
Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小...
java录音小程序,也是网载的,本人测试录音成功,分享给有需要的人。 提示:如果你使用无法录音,请试试在其它机器上如何,可能是你机器的问题,本人就吃过这样的亏。
java调用科大讯飞语音转写接口,实现会议录音,并实现记录会议既要功能!
在Java编程环境中,录音与播放功能是通过Java Sound API实现的。这个API提供了一系列的类和接口,使得开发者能够处理音频输入、输出以及处理。在这个"java 录音与播放材料"的压缩包中,可能包含了相关的代码示例、...
录音代码.java 录音代码.java 录音代码.java
一个用java写的简单的录音机,亲自测试没有问题,可以生成wav声音,格式可调
通过java实现的录音功能,可以修改录音存储的位置
Java录音程序是使用Java语言开发的一种能够从计算机的麦克风捕获音频流并将其保存为WAV格式文件的应用。在本文中,我们将深入探讨如何利用Java实现这一功能,以及涉及的相关技术点。 首先,Java提供了Java Sound ...
总的来说,实现一个Java录音机需要对Java Sound API有深入的理解,包括音频格式、数据流的处理以及资源管理。通过上述步骤,你可以创建一个基本的录音程序,根据需求还可以扩展功能,如添加播放、剪辑、音效处理等。
- **录音**:利用Java的`javax.sound.sampled`包来捕获和录制音频。 - **上传音频**:将录制的音频数据转换为API接受的格式,如PCM或WAV,然后上传到语音识别服务。 - **获取结果**:服务返回识别后的文本,你...
本项目主要关注的是如何在Java环境中利用讯飞的语音转文字(ASR,Automatic Speech Recognition)服务。下面我们将详细探讨相关的知识点。 1. **Java编程基础**: - Java是一种跨平台的面向对象的编程语言,广泛...
有需要的请留下您的评论,如果需要更加丰富的功能,大家讨论一起学习下,呵呵
本设计源码提供了一个基于Java的录音与音频播放demo。项目包含39个文件,主要使用Java编程语言。文件类型包括10个XML配置文件、10个WEBP图片文件、9个Java源代码文件、3个Gradle文件、2个GIT忽略文件、2个Properties...
java实现麦克风自动录音 获取麦克风音频数据,在控制台输入字母end按回车,则结束录音;
本篇文章将深入探讨如何使用Java与FlashWavRecorder技术实现网页录音并上传的功能。 首先,我们要明白Java和FlashWavRecorder在这一过程中的角色。Java是一种广泛使用的后端编程语言,它能够处理服务器端的逻辑,...
在这个Java录音机程序中,主要是通过创建一个处理器来捕捉声音数据,并将捕捉到的数据通过一个DataSink 对象发送到指定的目的地,如网络上,具体到本例中将是一个指定的本地文件。 运行环境:Java/Eclipse
本篇将深入探讨如何利用Java Sound API实现简单的录音(音频采集)功能。 首先,我们关注的是"SimpleRecord.java"文件,这是实现录音功能的核心代码。在这个文件中,我们将看到如何创建一个AudioInputStream对象,...
在Android平台上实现MP3录音,通常涉及到音频采集、编码以及保存等多个步骤。在这个过程中,我们需要用到特定的库,如LAME,它是一个高效的MP3编码器。LAME库的最新版本是lame-3.99.5,这个版本在处理音频质量和效率...
Java数字音频识别程序.pdf