Java的声音处理介绍

合集下载

Java应用中的音视频处理技术

Java应用中的音视频处理技术

Java应用中的音视频处理技术在Java应用中,音视频处理技术的应用已经变得越来越广泛。

音视频是人们日常生活中不可或缺的重要元素,并且随着通信技术的发展,人们对音视频处理的需求也越来越高。

本文将介绍Java应用中的音视频处理技术,并探讨其在不同领域中的应用。

一、音视频处理技术概述音视频处理技术是一种将音频和视频进行编码、解码、编辑和处理的技术。

它可以对音频和视频进行格式转换、音频合成、视频剪辑、特效添加等操作。

在Java应用中,音视频处理技术可以通过使用各种开源库和框架来实现。

二、音频处理技术1. 音频编解码音频编解码是音频处理的基础。

Java应用中可以使用开源库如FFmpeg和JAVE进行音频编解码,通过对音频流进行解码、处理、再编码,可以实现音频格式转换、音频质量优化等功能。

2. 音频合成音频合成是将多个音频文件合并为一个音频文件。

Java应用中可以使用开源库如Beaglebuddy和Java Sound API来实现音频合成,通过合并不同音频片段,可以实现音频剪辑、声音混合等效果。

3. 声音处理声音处理技术可以对音频进行降噪、增益、均衡器调整等操作,可以改善音频的质量和效果。

Java应用中可以使用开源库如JDK提供的Java Sound API和Google开发的WebRTC来实现声音处理,通过对音频数据进行实时处理,可以提高音频的清晰度和逼真度。

三、视频处理技术1. 视频编解码视频编解码是视频处理的基础。

Java应用中可以使用开源库如Xuggler和FFmpeg来实现视频编解码,通过对视频流进行解码、处理、再编码,可以实现视频格式转换、视频质量优化等功能。

2. 视频剪辑视频剪辑可以对视频进行切割、拼接、删除无用片段等操作。

Java应用中可以使用开源库如JCodec和Xuggler来实现视频剪辑,通过对视频帧进行处理,可以实现视频的快进、慢放、倒放等效果。

3. 视频特效视频特效可以给视频添加滤镜、动画、字幕等效果,提升视觉效果。

Java中解析wav音频文件信息:音频声道数,采样频率,采样位数、声音尺寸

Java中解析wav音频文件信息:音频声道数,采样频率,采样位数、声音尺寸

Java中解析wav⾳频⽂件信息:⾳频声道数,采样频率,采样位数、声⾳尺⼨前⾔:请各⼤⽹友尊重本⼈原创知识分享,谨记本⼈博客:⾳频解析⽅法:1public static int toInt(byte[] b) {2return ((b[3] << 24) + (b[2] << 16) + (b[1] << 8) + (b[0] << 0));3 }45public static short toShort(byte[] b) {6return (short)((b[1] << 8) + (b[0] << 0));7 }8910public static byte[] read(RandomAccessFile rdf, int pos, int length) throws IOException {11 rdf.seek(pos);12byte result[] = new byte[length];13for (int i = 0; i < length; i++) {14 result[i] = rdf.readByte();15 }16return result;17 }⾳频解析⽅法调⽤:1public static void main(String[] args) throws IOException {2 File f = new File("E:/zmj-3011-32779/audio.wav");3 RandomAccessFile rdf = null;4 rdf = new RandomAccessFile(f,"r");56 System.out.println("声⾳尺⼨: " + toInt(read(rdf, 4, 4))); // 声⾳尺⼨78 System.out.println("⾳频格式: " + toShort(read(rdf, 20, 2))); // ⾳频格式 1 = PCM910 System.out.println("声道数: " + toShort(read(rdf, 22, 2))); // 1 单声道 2 双声道1112 System.out.println("采样率: " + toInt(read(rdf, 24, 4))); // 采样率、⾳频采样级别 8000 = 8KHz1314 System.out.println("波形的数据量: " + toInt(read(rdf, 28, 4))); // 每秒波形的数据量1516 System.out.println("采样帧: " + toShort(read(rdf, 32, 2))); // 采样帧的⼤⼩1718 System.out.println("采样位数: " + toShort(read(rdf, 34, 2))); // 采样位数1920 rdf.close();212223 }控制台打印结果:总语我是记录点滴每天成长⼀点点,学习是永⽆⽌境的!转载请附原⽂链接。

毕业设计(论文)-基于java的mp3播放器jmplayer[管理资料]

毕业设计(论文)-基于java的mp3播放器jmplayer[管理资料]

基于JA V A的Mp3播放器JMPlayer作者姓名专业计算机科学与技术指导教师姓名专业技术职务讲师山东轻工业学院本科毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业论文,是本人在指导教师的指导下独立研究、撰写的成果。

论文中引用他人的文献、数据、图件、资料,均已在论文中加以说明,除此之外,本论文不含任何其他个人或集体已经发表或撰写的成果作品。

对本文研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示了谢意。

本声明的法律结果由本人承担。

毕业论文作者签名:年月日山东轻工业学院关于毕业设计(论文)使用授权的说明本毕业论文作者完全了解学校有关保留、使用毕业论文的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅和借阅,学校可以公布设计论文的全部或部分内容,可以采用影印、扫描等复制手段保存本论文。

指导教师签名:毕业设计(论文)作者签名:年月日年月日目录摘要 (III)ABSTRACT (IV)第一章引言 (1)课题研究背景及意义 (1)音乐播发器的发展及历史 (1)系统开发目标 (2)本文的主要内容和结构 (2)第二章相关工具及技术介绍 (1)Eclipse简介 (3)Java Thread简介 (4)JavaSound简介 (5)Java Swing简介 (6)Java Properties简介 (7)第三章需求分析 (9)工作流程分析 (9)评价具体需求分析 (9)系统功能结构图 (9)功能详细描述 (10)Mp3播放 (10)播放控制 (10)播放信息控制 (10)Mp3列表管理 (11)歌词 (11)其他 (11)第四章总体设计 (12)系统要求 (12)系统功能描述 (12)系统运行环境 (13)系统设计思想 (13)总体流程设计 (13)Mp3播放设计 (14)播放模式设计 (15)Mp3文件列表管理设计 (15)歌词设计 (16)皮肤切换设计 (17)显示模式设计 (18)第五章详细设计 (19)界面设计 (19)系统关键类设计 (20)系统类结构 (22)第六章软件功能实现 (23)播放Mp3实现 (23)Mp3文件解析实现 (23)Mp3列表控制类实现 (23)Mp3歌词解析及显示控制实现 (23)结束语 (25)参考文献 (24)致谢 (27)摘要随着java 语言的出现,软件的跨平台性已经能被更进一步的解决和处理,随着Internet的发展,软件的跨平台性又被提高到另一个新的要求。

Java语音技术之FreeTTS

Java语音技术之FreeTTS

Java语音技术之FreeTTSJava提供了语音API技术用于支持应用程序或Web页面中的人机语音交互,其核心技术包括语音合成和语音识别。

FreeTTS是Java语音合成技术的实现手段之一,以创建电话号码朗读程序为例, 探讨了基于该技术的Java语音API实现方法及相关问题。

计算机技术的快速发展同时也推动了多媒体技术的广泛应用, 人机语音交互已经不再是纯粹的理论研究, 其应用在日常生活中越来越普遍: 如移动终端、通信、信息系统服务、家庭娱乐等。

作为流行的编程语言, Java 提供了语音A P I 技术用于实现应用程序或者Web 页面中的人机语音交互, 包括语音合成和语音识别两部分核心技术,但官方并未提供其实现工具。

FreeTTS 属于第三方免费语音合成java组件, 由Speech Interat ion Group of Sun Micro systemsLaboratiories 和来自IBM的Speech for Java两公司合作开发。

本文探讨了基于FreeTTS的语音朗读程序设计与实现, 为工业应用中相关系统的开发提供一个技术参考。

1.FreeTTS 的获得、安装与配置FreeTTS属于免费的开源java组件, 其官方网站是: ,用户可以在该网站上免费下载。

目前最新的版本是11211,下载后的文件名与格式是: freetts-1.2.2-bin.zip。

基于java的特点,该组件是跨平台的,安装方法与普通java 应用程序或者组件的方法类似, 将文件解压至特定目录并设置环境变量即可, 具体过程可以参考其安装说明。

2.语音合成功能实现以一个例子来说明FreeTTS 的应用。

该程序最终实现的效果如图1所示。

用户在下拉菜单中可选择“张三”、“王五”、“赵七”三个名字,三人依次对应电话号码。

选择人名后点击“读出号码”,系统即可发出声音,将对应的电话号码读出。

该程序的设计包括以下过程:①导入Java 语音API包主要代码:Import javax.speech.* ;Import javax.speech.synthesis.* ;其中javax1speech中的类和接口用来支持音频连通性;javax1speech.synthesis中的类和接口用来支持语音合成。

使用Java分离音频左右声道

使用Java分离音频左右声道

使⽤Java分离⾳频左右声道使⽤Java分离⾳频左右声道1.⾳频属性相关⾳频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、采样位数、时长。

1.1.声道记录声⾳时,如果每次⽣成⼀个声波数据,称为单声道;每次⽣成两个声波数据,称为双声道(⽴体声)。

单声道的声⾳只能使⽤⼀个喇叭发声,双声道的PCM可以使两个喇叭同时发声(⼀般左右声道有分⼯),更能感受到空间效果。

1.2.采样率单位时间内采集的样本数,即:采样周期的倒数,指两个采样之间的时间间隔。

采样频率越⾼,声⾳质量越好,但同时占⽤的带宽越⼤。

⼀般情况下,22KHz相当于普通FM的⾳质,44KHz相当于CD⾳质,⽬前的常⽤采样频率都不超过48KHz。

1.3.采样位数表⽰⼀个样本的⼆进制位数,即:每个采样点⽤多少⽐特表⽰。

计算机中⾳频的量化深度⼀般为4、8、16、32位(bit)等。

例如:采样位数为8 bit时,每个采样点可以表⽰256个不同的采样值,⽽采样位数为16 bit时,每个采样点可以表⽰65536个不同的采样值。

采样位数的⼤⼩影响声⾳的质量,采样位数越多,量化后的波形越接近原始波形,声⾳的质量越⾼,⽽需要的存储空间也越多;位数越少,声⾳的质量越低,需要的存储空间越少。

⼀般情况下,CD⾳质的采样位数是16 bit,移动通信是8 bit。

1.4.帧⾳频在量化得到⼆进制的码字后,需要进⾏变换,⽽变换(MDCT)是以块为单位(block)进⾏的,⼀个块由多个(120或128)样本组成。

⽽⼀帧内会包含⼀个或者多个块。

帧的常见⼤⼩有960、1024、2048、4096等。

⼀帧记录了⼀个声⾳单元,它的长度是样本长度和声道数的乘积。

FFmpeg中 AVFrame 结构体中的 nb_samples 代表的就是⼀帧中单个声道的⾳频样本数量。

数字⾳频⽂件⼤⼩(Byte) = 采样频率(Hz)× 采样时长(S)×(采样位数 / 8)× 声道数(单声道为1,⽴体声为2)2.FFmpeg介绍FFmpeg 是⼀个专业的多媒体框架,能够解码、编码、转码、复⽤、解复⽤、流式传输、过滤和播放⼏乎所有格式的媒体⽂件。

艺术编程知识点总结大全

艺术编程知识点总结大全

艺术编程知识点总结大全艺术编程是一种将编程与艺术相结合的创新领域,通过编程语言和技术创造出视觉和声音艺术作品。

艺术编程通常涉及计算机图形学、音频处理、交互设计和其他数字艺术领域的知识。

下面将总结艺术编程的一些重要知识点,包括编程语言、艺术作品的创作过程、技术应用等方面。

一、编程语言1. ProcessingProcessing是一种基于Java语言的编程语言,专门用于创作视觉艺术作品。

它提供了丰富的绘图和交互设计功能,能够让艺术家和设计师创造出各种动态和静态的艺术作品。

另外,Processing还有一个强大的社区支持,有大量的示例代码和教程可供学习。

2. p5.jsp5.js是一个基于JavaScript的艺术编程工具,类似于Processing,但更适合于在Web环境下进行艺术创作。

它提供了丰富的绘图和动画功能,可以结合HTML和CSS,创建出各种视觉效果。

3. Max/MSPMax/MSP是一种流行的可视化编程语言,主要用于创作音频艺术作品。

它可以创建出各种音频合成、效果处理和交互设计的功能,广泛应用于音乐和声音艺术领域。

4. CinderCinder是一个基于C++的创意编程工具,主要用于艺术家和设计师在计算机图形学领域的创作。

它提供了丰富的图形和视觉效果的功能,可以创建出各种精美的艺术作品。

5. OpenFrameworksOpenFrameworks也是一个基于C++的可视化编程工具,类似于Cinder,广泛应用于计算机图形学和交互设计领域。

二、艺术作品创作1. 视觉艺术作品在艺术编程中,视觉艺术作品是一种常见的创作形式,可以通过编程语言和技术,创造出各种静态和动态的视觉效果。

艺术家可以利用各种绘图和动画功能,生成艺术作品,展现出不同的创作理念和审美观念。

2. 音频艺术作品音频艺术作品是另一种常见的创作形式,在艺术编程中,艺术家可以利用音频合成、效果处理和交互设计功能,创造出各种独特的声音艺术作品。

手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

⼿把⼿教你⽤JAVA实现“声⾳复刻”功能(复刻你的声⾳)标贝科技⼿把⼿教你⽤JAVA实现“声⾳复刻”功能(复刻你的声⾳)标贝科技前⾔什么是声⾳复刻?使⽤少量的⽤户声⾳,短时间内快速为⽤户量⾝打造个⼈定制⾳⾊⼀、内容太长不愿意看,直接使⽤系列声⾳复刻分为两步(1)定制模型:参数要求:⽀持⾳频⽂件的编码格式及⽂件名的后缀: wav,pcm⽀持⾳频⽂件的采样率: 16000Hz⽀持⾳频⽂件的位深:16bits⽀持的语⾔:中⽂⾳频有效时长:不⼩于3分钟⾳频的⾳质、⾳量均对模型效果有直接影响,请保证⾳频的录⾳环境相对安静、⾳频⼈声⾳量不能太⼩。

(2)定制声⾳合成:参数要求:⽀持设置合成⾳频的格式: pcm,wav,mp3,alaw,ulaw⽀持设置合成⾳频的采样率: 16000Hz⽀持设置⾳量、语速、语调⽀持语⾔: 中⽂(zh)⽀持声⾳模型类型:普通⾳质、精品⾳质确认⽆误后,直接执⾏ 2.2获取权限+2.3.6完整代码⽰例⼆、⽤JAVA调⽤标贝科技“声⾳复刻”接⼝使⽤流程2.1.环境准备java2.2.获取权限2.1.1.登录点击上⽅地址登录,⽀持短信、密码、微信三种登录⽅式。

2.1.2.创建应⽤登录后,点击创建应⽤,填写相关信息(未实名认证只能创建⼀个应⽤)(注:实名认证后可获得创建多个应⽤的权限)进⼊应⽤,其中包含的技术产品有:语⾳识别、语⾳合成、声⾳复刻、声⾳转换页⾯中功能主要包括:服务⽤量管理、购买服务量管理、开发者⽂档、授权管理、套餐管理2.1.3.获取token点击声⾳复刻--->授权管理--->显⽰--->获取APISecret--->()2.3.代码实现2.3.1.获取token/*** 授权:需要在开放平台获取【https:///#/?source=qaz123】*/private static final String clientSecret = "输⼊你的clientsecret";/*** 获取token的地址信息*/public static String tokenUrl = "https:///oauth/2.0/token?grant_type=client_credentials&client_secret=%s&client_id=%s"; public static String getAccessToken() {String accessToken = "";OkHttpClient client = new OkHttpClient();// request 默认是get请求String url = String.format(tokenUrl, clientSecret, clientId);Request request = new Request.Builder().url(url).build();JSONObject jsonObject;try {Response response = client.newCall(request).execute();if (response.isSuccessful()) {// 解析String resultJson = response.body().string();jsonObject = JSON.parseObject(resultJson);accessToken = jsonObject.getString("access_token");}} catch (Exception e) {e.printStackTrace();}return accessToken;}2.3.2.定制模型--提交复刻任务参数说明:access_token:鉴权tokenoriginFiles:⾳频⽂件集合mobile:⼿机号(⽤于模型训练之后短信提醒)notifyUrl:回调urlprivate static void doSoundReproduction(String accessToken, List<File> originFiles, String mobile, String notifyUrl) {//创建连接OkHttpClient client = new OkHttpClient();//构建requestBody,传⼊参数MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);for (File file : originFiles) {RequestBody body = RequestBody.create(file, MediaType.parse("multipart/form-data"));String filename = file.getName();requestBody.addFormDataPart("originFiles", filename, body);}requestBody.addFormDataPart("access_token", accessToken);requestBody.addFormDataPart("mobile", mobile);requestBody.addFormDataPart("notifyUrl", notifyUrl);//构造requestRequest request = new Request.Builder().url(soundReproductionUrl).method("POST", requestBody.build()).build();try {Response response = client.newCall(request).execute();if (response.isSuccessful()) {System.out.println("调⽤成功,返回结果:" + response.body().string());} else {System.out.println("调⽤失败,返回结果:" + response.body().string());}} catch (Exception e) {e.printStackTrace();}}2.3.3.定制模型-回调代码@ApiOperation(value = "测试⽤回调接⼝", notes = "该链接由参数notifyUrl设置,如果链接⽆法访问,将⽆法接收到回调的push信息。

Java Sound API心得

Java Sound API心得

Java Sound API是javaSE平台提供底层的(low-level)处理声音接口。

例外,java也提供了简单的实用的高层媒体接口(higher-level) -JMF(Java Media Framework)。

Java Sound API 将需要处理的数字音频分为:simpled-audio和midi,分别提供Package来处理它们:javax.sound.simpledjavax.sound.midi同时SOUND API还提供了第三方的扩展接口:javax.sound.simpled.spijavax.sound.midi.spi*注:spi : service provider interfaceSampled Audio采样音频(simpled-audio)不仅包含从模拟信号采样来的数字音频,还包括电脑合成的。

称作digital-audio更为合适。

为了能够让设备播放采样声音,程序需要处理audio input, output device, audio data buffers。

还有混音处理(mix multiple streams of audio into one stream)。

SOUND API 可以使用3种方式传输声音数据:stream, buffered fashion, in-memory unbuffered fashion。

第三种方式适合数据量不大,能够一次载入的所有数据的情形。

这样,声音的响应较快,循环和随机定位也会很简单。

使用SOUND API播放声音至少需要3样东西:l formatted audio data,l a mixer,l a line.Mixer调音台technically the Mixer itself is also a kind of LineLine音频数据管道。

Clip extends Line将需要播放的音频数据装载进来。

Java基于接口实现模拟动物声音代码实例

Java基于接口实现模拟动物声音代码实例
}
(2)编写模拟类Simulator (Simulator.java)
public class Simulator { public void playSound(Animal animal) { System.out.print("正在播放模拟" + animal.getAnimalName() +"的声音:"); animal.cry(); }
public class Application{ public static void main(String[] args) { Simulator simulator = new Simulator(); simulator.playSound(new Dog()); simulator.playSound(new Cat()); }
这篇文章主要介绍了详解maven配置多仓库的方法示例文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随着小编来一起学习学习吧
Java基 于 接 口 实 现 模 拟 动 物 声 ห้องสมุดไป่ตู้ 代 码 实 例
(1)编写接口Animal (Animal.java)
public interface Animal{ public abstract void cry(); public abstract String getAnimalName();
}
(3)编写Dog类和Cat类 (Dog.java、Cat.java)
Dog类:
public class Dog implements Animal{ public void cry(){ System.out.println("汪汪汪"); } public String getAnimalName(){ return "狗"; }

Java应用中的音频与视频处理

Java应用中的音频与视频处理

Java应用中的音频与视频处理在当今数字化时代,音频与视频处理已成为Java应用中的重要组成部分。

无论是在媒体播放器、语音识别、视频编辑还是在线教育等领域,Java都扮演着关键角色。

本文将探讨Java应用中的音频与视频处理的相关技术和实践。

一、音频处理1.1 音频格式音频文件通常以不同的格式存储,如MP3、WAV、FLAC等。

Java提供了丰富的库和工具,使开发者能够读取、写入和处理各种音频格式。

通过使用Java音频库(javax.sound),我们可以轻松地处理音频文件。

1.2 音频录制与播放Java可以利用javax.sound.sampled包中的类来实现音频的录制与播放功能。

通过使用TargetDataLine类,我们可以从音频设备中读取音频数据,而SourceDataLine类则用于将音频数据输出到设备。

这些类提供了一种简单而有效的方式来处理音频输入和输出。

1.3 音频处理效果音频处理效果是提升音频质量的重要手段之一。

Java中提供了一些开源的库和工具,如javazoom.jl.converter和TarsosDSP等,可以用于添加均衡器、混响、降噪等效果,以改善音频的声音质量和清晰度。

二、视频处理2.1 视频格式与音频类似,视频文件也以不同的格式存储,如MP4、AVI、MKV等。

Java通过使用开源框架FFmpeg,可以对不同的视频格式进行处理。

FFmpeg是一个跨平台的多媒体处理工具,支持压缩、转码、剪辑等功能。

2.2 视频播放与捕捉JavaFX是Java平台下用于构建富应用程序的工具包,它包含了用于视频播放的媒体类。

通过使用JavaFX提供的MediaPlayer类,我们可以加载和播放各种视频格式。

此外,Java还提供了类似于音频处理中的TargetDataLine和SourceDataLine类似的类,如VideoCapture用于捕捉实时视频流。

2.3 视频编辑与特效音频和视频处理往往需要对媒体进行编辑和添加特效。

J2ME MIDP手机游戏开发第5章 音频与视频处理

J2ME MIDP手机游戏开发第5章  音频与视频处理
第5章 音频• • 能熟练地运用利用管理器(Manager)打开一个音频文件; 使用播放器(Player)播放一个音频文件; 使用播放器(Player)的方法设置音频的重复次数以及播放时间; 学会使用播放器(Player)构造一个音量控制器(VolumeControl); 能熟练地使用音量控制器(VolumeControl)控制声音的大小与静音; 能熟练的使用管理器(Manager)、播放器(Player)打开一个视频 文件; • 能熟练掌握运用播放器(Player)构造一个视频控制器 (VideoControl); • 能熟练掌握使用视频控制器(VideoControl)设置视频的显示范围和 显示属性; • 能够熟练的为游戏添加背景音乐和相应的音效。
5.2 以独占方式播放声音
5.2.1 知识准备:了解Mobile Media API类
Manager createPlayer ( 2 6 ) close setLoopCount 方法 方法 方法 Mobile Media API (MMAPI) 为多媒体开发提供了一个强大,可扩 (管理器) Manager类是Media API接口中最重要的类,Manager类用于创建各 ① 充以及简单的接口。他有一套规范的播放和录制 语法: public void static close(); setLoopCount Player createPlayer(String (int count); locator) audio或 video 种不同类型的 Player 对象, Player 对象用于播放音频。 Player 创建 提供 语法: ② 说明:关闭播放器释放资源。 说明:设置播放循环次数。 public public static static Player Player createPlayer(java.io.InputStream createPlayer(String locator) 的接口。 接口用来播放各类格式饿多媒体内容。 Controllable 接口用于 说明:该方法用于从指定的位置获取数据,创建一个 ( 参数说明: 3stream,String ) deallocate count 为播放次数,当 方法 type) count 为-1接口由于集成了 时,为无穷循环播放。 Player对象 Mobile Media API 接口由两个包组成,分别: 协助对象获取一个 Control接口, Player 语法: ( 7实例。 ) start public void方法 deallocate static Player (); javax.microedition.media 包和 Controllable 接口,因此可以通过条用继承自 Controllable 接 Data Player Control 参数: 说明:释放被其占用的稀有资源,例如声音设备。 语法: createPlayer(java.io.InputStream locator void start 是位置字符串。 (); stream,String type) (数据源) (播放器) (控制器) javax.microedition.media.control 包。 口的 getControl ()方法来获取自己的 Control接口,以便用来 返回值:一个 说明:该方法用于从一个输入流创建一个 ( 说明:声音开始播放。 4控制媒体播放。 ) prefetch Player 方法对象实例。 Player 对象实例。 Media 包中包含 Control 接口、Controllable 接口、 Player接口、 异常: 参数: 语法: ( 8PlayerLinstener ) stop NullPointerException stream void 方法 prefetch 是媒体数据的输入流。 ();Manager 当locator type 为空时抛出此异常 为数据源类型。 接口和 类。 Control 包中包含了所有 Control 接口是一个用来协助 Player 的接口,用于控制音调和音量。 返回值:一个 说明:获取稀有资源,例如声音设备,尽量减少播放延时。 语法: void MedilaException stop Player (); 对象实例。 从指定的数据源位置无法创建 Player 实 控制 接口。 的 Control 接口、 ToneControl 接口和VolumeControl 他有两个子接口,分别是 ToneControl 接口和VolumeControl 接 提供 (5例,抛出此异常。 说明:声音停止播放。 ) realize 方法 接口用于控制序列音的播放,VolumeControl 口。 ToneControl java.io.IOException 语法: void realize与指定数据源连接出现问题,抛出此异常。 (); 接口用于控制播放的音量。 图5-1 Mobile Media API 体系结构图 SecurityException 未获得创建Player实例的安全许可,抛出此 说明:获取播放信息,但是并不获取播放资源。 异常。

mediaactionsound 的用法

mediaactionsound 的用法

MediaActionSound是一个用于播放各种媒体操作声音的类,例如拍照、录像等。

以下是一些示例用法:
1. 创建MediaActionSound对象:
```java
MediaActionSound sound = new MediaActionSound();
```
2. 加载并播放声音:
```java
sound.load(MediaActionSound.FOCUS_COMPLETE); // 加载聚焦完成的声音
sound.play(MediaActionSound.FOCUS_COMPLETE); // 播放聚焦完成的声音
```
3. 停止播放声音:
```java
sound.release(); // 释放音频资源
```
MediaActionSound类还提供了其他一些预定义的声音,例如SHUTTER_CLICK(拍照声音)、START_VIDEO_RECORDING(录像开始声音)和STOP_VIDEO_RECORDING(录像结束声音)。

可以使用load()方法加载这些声音,然后使用play()方法播放它们。

例如:
```java
sound.load(MediaActionSound.SHUTTER_CLICK);
sound.play(MediaActionSound.SHUTTER_CLICK);
```
需要注意的是,MediaActionSound类需要Android SDK中的android.media包支持,因此在使用前需要确保已经导入了该包。

同时,使用MediaActionSound类时,也需要考虑音频资源的使用情况,及时释放音频资源以避免资源浪费。

Javaapplet音频播放器

Javaapplet音频播放器

1课题需求分析在Java2平台出现前,Java语言只能处理电话音质的声音,以单声道8KHz的采样频率存储为u-lawAU文件。

Java2平台增加了AIFF、WA V以及三种MIDI文件类型的支持。

所支持的三种MIDI文件格式为MIDI文件类型0、MIDI文件类型1以及RMF。

2课程解决方案本程序有三个文件:SoundApplet.Java是主文件,AppletSoundLoader.Java中的AppletSoundLoader类继承Thrwad负责为声音文件获得AudioClip对象并把它加到AppletSoundList中去;AppletSoundList.java中定义的AppletSoundList继承自Hashtable,提供getClip<String)和putClip(AudioClip,String>方法,分别从哈希表中取得AudioClip 对象和放置AudioClip对象。

其结构是AppletSoundList中用AppletSoundLoader来装载制定URL的声音文件,AppletSoundLoader负责为声音文件产生AudioClip对象并添加到AppletSoundList中。

在SoundApplet中则只是利用AppletSoundList类。

3课题实现主要的声音文件类型如下:AU (扩展名为AU或SND>:适用于短的声音文件,为Solaris和下一代机器的通用文件格式,也是Java平台的标准音频格式。

AU类型文件使用的三种音频格式为:8位u-law类型<通常采用频率为8KHz),8位线性类型以及16位线性类型。

WA V<扩展名为WA V):由Microsoft和IBM共同开发,对WA V的支持已经被加进Windows95并且被延伸到Windows98。

WA V文件能存储各种格式包括u-law、a-law 和PCM<线性)数据。

Java语音引擎

Java语音引擎

为应用程序加上语音能力有什么好处呢?粗略地讲,是为了趣味,它适合所有注重趣味的应用,比如游戏。

当然,从更严肃的角度来讲,它还涉及到应用的可用性问题。

注意,这里我考虑的不仅是可视化界面固有的不足,而且还有这样一些情形:一些时候,让双眼离开当前的工作很不方便,甚至是不合法的。

比如,假设有一个带语音功能的浏览器,你就可以在外出散步或开车上班的同时,用听的方式浏览自己喜爱的网站。

从目前来看,邮件阅读器或许是语音技术更实际的应用,在JavaMail API的帮助下,这一切已经可能。

邮件阅读器可以定期地检查收件箱,然后用语音“You have new mail, would you like me to read it to you?”引起你的注意。

按照类似的思路,我们还可以考虑一个带语音功能的提醒器,把它连接到一个日历应用:它会及时地提醒你“Don't forget your meeting with the boss in 10 minutes!”。

也许你已经被这些主意吸引,或者有了自己更好的主意,现在让我们继续。

首先我将介绍如何启用本文提供的语音引擎,这样,如果你认为语音引擎的实现细节过于复杂,就可以直接使用它而忽略其实现细节。

一、试用语音引擎要使用这个语音引擎,你必须在CLASSPATH中加入本文提供的javatalk.jar文件,然后从命令行运行(或者从Java程序调用)com.lotontech.speech.Talker类。

如果从命令行运行,则命令为:java com.lotontech.speech.Talker "h|e|l|oo"如果从Java程序调用,则代码为:com.lotontech.speech.Talker talker=new com.lotontech.speech.Talker();talker.sayPhoneWord("h|e|l|oo");现在,对于在命令行上(或者调用sayPhoneWord()方法时)提供的“h|e|l|oo”字符串,你或许有所不解。

Java ME手机游戏中的声音处理方式分析

Java ME手机游戏中的声音处理方式分析

3手机游 戏 中声音 的特点
相 比 于桌 面 游 戏 , 于手 机 的 内存 小 、 理 器 性 能 有 限 、 电持 续 时 间短 、 持 的 音 频 格 式 较 少 , 以 手 机 游 戏 对 于 音 频 和 音 频 由 处 供 支 所
处理 有 较 多 限 制 。声 音 文 件 的格 式 必 须 被 目标 手机 支 持 , 不影 响游 戏 质 量 前 提 下 声 音 文 件 要尽 可 能精 简 。在 处 理 声 音 文 件 时 , 在 应 合理 分 配 内存 空 间 ,由 于游 戏 往 往 是 多 线 程 的 ,音 频 处理 不 恰 当会 导 致 音 乐 与 游 戏 动 作 不 一致 的分 离 感 或游 戏 突 然 停 顿 的 不 流 畅 感 , 重影 响游 戏 性 能 。 严 手 机 游 戏 中的 声 音 主要 可 以分 为 两 种 : 种 是 持续 的 背 景 音 乐 , 一 种 是 非 持 续 的音 效 。 由于 声 音 的 不 同 , 来处 理 声 音 的 方 一 另 用
l SN 1 0 - 0 4 S 9 3 4 0
E— i e u @C C .e .n mal d f C C n t : c ht :w t / ww. n s e.B p/ d z. t n C
T 1 8— 5 — 6 0 6 5 9 9 4 e: 6 5 1 5 9 9 3 + 6 0 6
(. in n C  ̄ g f ot r e h oo y Qin hi 7 0 Ch a 1 n a o e eo f eT c n lg , o g a 5 1 0 , i ) Ha S wa 4 n
Ab t a t sr c :Th sat l i u sst e a d o p o e s g m o e i b e g me y me n fi u ci n a d c a a t r t s Ac o d n o df i r ce d s se h u r c s n d n mo  ̄ a sb a so sf n t n h r ce i i . c r i g t i i c i i t o sc - fr n o dt n p o o e O me h d o u o p o es g a d g v e so e o p c t n f r e c eh d b o a a v n l s n e e tc n i o , r p s st t o sf r d r c si n i e t c p f p h ai a h m t o y c mp rt e a a i a d i w ai n h a o o i y s h e l t n o x mp e t e raia o f n e a l. zi a

java视频音频的处理

java视频音频的处理

static AudioFormat.Encoding ULAW; //指定 u-law 编码数据
如果不指定该变量,则默认使用线性 PCM 编码。 sampleRate:每秒样本数。即取样率,表示每一秒钟取样的频率,可选值有8000、11025、 16000、22050、44100。比如对于8000,表示每一秒钟会取样8000次,也就是采集8000次声 音。
图17-6 类关系图
图17-7 音频输入输入流程图 输入到混频器的信号也可以来源于剪辑(Clip)。剪辑是一个包含一段完整音频数据流的设 备,或者说,剪辑就是一个缓存在内存中的完整音频数据流。在一些要求反复播放音乐片段 的场合,例如游戏的背景音乐,剪辑是很有用的。
17.3.3 音频的数据格式
音频数据--也就是从 TargetDataLine 输入或从 SourceDataLine 输出的数据,必须符合音频格 式的标准。音频数据的格式选项 由 AudioFormat 类封装,主要选项包括:编码方式(可以 是 PCM(Pulse Code Modulation,脉冲编码调制)、MP3等)、通道数量、取样率、帧速率等。 根据不同的参数,AudioFormat 提供了3个构造函数
图17-5 JavaSound 体系结构 SPI 的作用是以插件(Plug-In)的形式提供自定义的扩展模块,我们只要提供与 SPI 兼容的 插件扩展模块,就可以在不改变 API 的情况下扩展 音频处理程序的能力。例如,假设有一 个只能播放 WAV 文件的程序,我们只要增加一个支持 MP3文件解码的插件模块,就可以在
targetDataLine
=
(TargetDataLine)
AudioSystem.getLine(dataLineInfo);

java播放声音的方法

java播放声音的方法

课程设计用的方法import java.applet.AudioClip;import java.io.*;import java.applet.Applet;import java.awt.Frame;import .MalformedURLException;import .URL;public class Music extends Frame{public static StringimagePath=System.getProperty("user.dir")+"/Music/";public Music(){t ry {URL cb;//File f = new File(imagePath+"mario.midi");//File f = new File(imagePath+"1000.ogg");File f = new File(imagePath+"失败音效.wav");//File f = new File("d:\\铃声.mp3");cb = f.toURL();AudioClip aau;aau = Applet.newAudioClip(cb);aau.play();//循环播放 aau.play() 单曲 aau.stop()停止播放//aau.loop();} catch (MalformedURLException e) {e.printStackTrace();}}public static void main(String args[]) {n ew Music();}}因为最近在研究java的语音聊天问题,所以刚刚好写了几个,给你三个播放的方法,分为三个类,建议采用第二或第三个:package org.bling.music;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import sun.audio.AudioPlayer;public class MusicTest2 {private InputStream inputStream = null;private String file = "./intel.wav";public MusicTest2(){}public void play() throws IOException{inputStream = new FileInputStream(new File(file)); AudioPlayer.player.start(inputStream);}public static void main(String[] args) {try {new MusicTest2().play();} catch (IOException e) {e.printStackTrace();}}}---------------------------------------------------------------- package org.bling.music;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.LineUnavailableException;import javax.sound.sampled.SourceDataLine;import javax.sound.sampled.UnsupportedAudioFileException;public class MusicTest {private AudioFormat audioFormat = null;private SourceDataLine sourceDataLine = null;private dataLine_info = null;private String file = "./intel.wav";private AudioInputStream audioInputStream = null;public MusicTest() throws LineUnavailableException, UnsupportedAudioFileException, IOException{audioInputStream = AudioSystem.getAudioInputStream(new File(file)); audioFormat = audioInputStream.getFormat();dataLine_info = new (SourceDataLine.class,audioFormat); sourceDataLine = (SourceDataLine)AudioSystem.getLine(dataLine_info); }public void play() throws IOException, LineUnavailableException{byte[] b = new byte[1024];int len = 0;sourceDataLine.open(audioFormat, 1024);sourceDataLine.start();while ((len = audioInputStream.read(b)) > 0){sourceDataLine.write(b, 0, len);}audioInputStream.close();sourceDataLine.drain();sourceDataLine.close();}public static void main(String[] args) {try {new MusicTest().play();} catch (IOException e) {e.printStackTrace();} catch (LineUnavailableException e) {e.printStackTrace();} catch (UnsupportedAudioFileException e) {e.printStackTrace();}}}-----------------------------------------------------------------package org.bling.music;import java.io.File;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.SourceDataLine;public class PlayTest {/*** @param args*/public static void main(String[] args) {try {AudioInputStream ais = AudioSystem.getAudioInputStream(newFile("intel.wav"));// 获得音频输入流AudioFormat baseFormat = ais.getFormat();// 指定声音流中特定数据安排System.out.println("baseFormat="+baseFormat); info = new (SourceDataLine.class,baseFormat); System.out.println("info="+info);SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);// 从混频器获得源数据行System.out.println("line="+line);line.open(baseFormat);// 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。

java文字转语音播报功能的实现方法

java文字转语音播报功能的实现方法

java⽂字转语⾳播报功能的实现⽅法前⾔本⽂主要给⼤家分享了关于java⽂字转语⾳播报的相关内容,分享出来供⼤家参考学习,下⾯话不多说了,来⼀起看看详细的介绍吧⽅法如下⼀、pom.xml引⼊jar包依赖<!-- https:///artifact/com.jacob/jacob ⽂字转语⾳ --><dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18</version></dependency>⼆、把jacob-1.18-x64.dll⽂件复制到jdk安装位置的bin⽬录下。

三、把jacobtest.java类导⼊⾄项⽬中测试运⾏。

package com.Interface.util;import com.jacob.activeX.ActiveXComponent;import .Dispatch;import .Variant;/*** ⽂字转语⾳测试 jdk bin⽂件中需要导⼊jacob-1.17-M2-x64.dll** @author zk* @date: 2019年6⽉25⽇上午10:05:21*/public class jacobtest {/*** 语⾳转⽂字并播放** @param txt*/public static void textToSpeech(String text) {ActiveXComponent ax = null;try {ax = new ActiveXComponent("Sapi.SpVoice");// 运⾏时输出语⾳内容Dispatch spVoice = ax.getObject();// ⾳量 0-100ax.setProperty("Volume", new Variant(100));// 语⾳朗读速度 -10 到 +10ax.setProperty("Rate", new Variant(-2));// 执⾏朗读Dispatch.call(spVoice, "Speak", new Variant(text));// 下⾯是构建⽂件流把⽣成语⾳⽂件ax = new ActiveXComponent("Sapi.SpFileStream");Dispatch spFileStream = ax.getObject();ax = new ActiveXComponent("Sapi.SpAudioFormat");Dispatch spAudioFormat = ax.getObject();// 设置⾳频流格式Dispatch.put(spAudioFormat, "Type", new Variant(22));// 设置⽂件输出流格式Dispatch.putRef(spFileStream, "Format", spAudioFormat);// 调⽤输出⽂件流打开⽅法,创建⼀个.wav⽂件Dispatch.call(spFileStream, "Open", new Variant("./text.wav"), new Variant(3), new Variant(true));// 设置声⾳对象的⾳频输出流为输出⽂件对象Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream);// 设置⾳量 0到100Dispatch.put(spVoice, "Volume", new Variant(100));// 设置朗读速度Dispatch.put(spVoice, "Rate", new Variant(-2));// 开始朗读Dispatch.call(spVoice, "Speak", new Variant(text));// 关闭输出⽂件Dispatch.call(spFileStream, "Close");Dispatch.putRef(spVoice, "AudioOutputStream", null);spAudioFormat.safeRelease();spFileStream.safeRelease();spVoice.safeRelease();ax.safeRelease();} catch (Exception e) {e.printStackTrace();}}}总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。

Java中的音频处理与音频识别技巧

Java中的音频处理与音频识别技巧

Java中的音频处理与音频识别技巧音频处理和音频识别是现代科技中的重要领域之一。

在Java编程语言中,我们可以利用各种库和工具来实现音频处理和音频识别的功能。

本文将介绍一些Java中常用的音频处理和音频识别技巧,帮助读者更好地理解和应用这些技术。

一、音频处理技巧1. 音频采样与量化在音频处理中,最基本的概念是音频采样和量化。

音频采样是指将连续的音频信号转换为离散的采样点,而音频量化是指将采样点的幅值转换为离散的量化级别。

Java中可以使用javax.sound.sampled包中的AudioSystem类和AudioInputStream类来实现音频采样和量化的功能。

2. 音频滤波与降噪音频滤波是指通过对音频信号进行滤波处理,去除一些不需要的频率成分或噪声。

在Java中,可以使用开源库如TarsosDSP来实现各种音频滤波算法,如低通滤波、高通滤波、带通滤波等。

此外,还可以利用Java中的FFT(快速傅里叶变换)算法对音频信号进行频域分析和滤波。

3. 音频合成与混音音频合成是指通过将多个音频信号进行叠加,生成新的音频信号。

在Java中,可以使用javax.sound.sampled包中的AudioInputStream类和AudioSystem类来实现音频合成的功能。

此外,还可以使用Java中的混音器(Mixer)来实现多个音频信号的混音。

4. 音频特征提取与分析音频特征提取是指从音频信号中提取出一些有意义的特征,用于音频分类、识别和检索等任务。

在Java中,可以使用开源库如TarsosDSP来实现音频特征提取算法,如时域特征(如能量、过零率)、频域特征(如频谱、梅尔频谱)和时频域特征(如短时傅里叶变换、小波变换)等。

二、音频识别技巧1. 语音识别语音识别是指将音频信号转换为文本信息的过程。

在Java中,可以使用开源库如CMU Sphinx和Google Cloud Speech-to-Text等来实现语音识别的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java的声音处理介绍声音可以创造意境,触发遐想,当与虚拟图像相结合时,更加可以让整个世界布满幻觉。

声音是多媒体技术的基础。

这就是Sun公司的java媒体技术开发小组忙于预备Java Sound 1.0 API并将其包含于下一版本的JAVA开发工具库中的原因。

在JAVA2平台出现之前,JAVA语言只能处理电话音质的声音,以单声道8KHZ的采样频率存储为μ-law AU文件。

JAVA2平台增加了对AIFF,WAV以及三种MIDI文件类型的支持。

所支持的三种MIDI文件格式为MIDI文件类型0、MIDI文件类型1、以及RMF。

应用程序接口API1.0版提供了一个易于使用的工具集,使程序员可以访问底层的合成与演奏引擎,从而扩展了 JAVA声音的应用。

其中两个重要的领域是创建数字化音频以及乐器指令数字化接口MIDI。

由于提供了大量的底层支持功能,所以程序员能输入输出声音,控制MIDI设备,并能查询系统运作情况。

声音文件类型简介主要的声音文件类型如下:AU - (扩展名为AU或SND)适用于短的声音文件,为Solaris和下一代机器的通用文件格式,也是JAVA平台的标准的音频格式。

AU类型文件使用的三种典型音频格式为: 8位μ-law类型(通常采样频率为8kHz), 8位线性类型,以及16位线性类型。

WAV - (扩展名为WAV)由 Microsoft和 IBM共同开发,对WAV的支持已经被加进Windows 95并且被延伸到Windows 98. WAV文件能存储各种格式包括μ-law,a-law 和 PCM (线性)数据。

他们几乎能被所有支持声音的Windows应用程序播放。

AIFF - (扩展名为AIF或IEF)音频互换文件格式是为Macintosh计算机和Silicon Graphics (SGI)计算机所共用的标准音频文件格式。

AIFF和 AIFF-C几乎是相同的,除了后者支持例如μ-law和 IMA ADPCM类型的压缩。

MIDI - (扩展名为MID)乐器数字接口MIDI是为音乐制造业所认可的标准,主要用于控制诸如合成器和声卡之类的设备。

MIDI文件不包含数字音频采样,而是包括一系列指令,这些指令控制把来自不同乐器上的音符序列合成乐曲。

一些MIDI文件包含附加指令来为各种合成设置进行编程。

大多数合成器支持MIDI标准,所以在一个合成器上制作的音乐能够在另一个上播放。

有 MIDI接口的计算机能操纵 MIDI数据以产生新音乐或音响效果。

例如,一个完整的音乐作品可以通过一个软件驱动的命令转换成全新的形式。

JAVA声音引擎支持两种MIDI文件类型:MIDI类型0文件-包含仅仅一个序列,所有相关的乐器部分被包含在同一个逻辑 "磁道"上。

MIDI类型1文件-包含多重的 "磁道"使得不同的乐器被逻辑地分开,从而使对声音的操作和重组更加轻易。

RMF - (扩展名为RMF)混合音乐格式是由Beatnik设计出来的混合文件类型,通过交互式设定将MIDI和音频采样封装在一起。

RMF好比是一个所有音乐相关文件的容器。

RMF也包含对有关版权的具体文件说明的支持。

RMF文件可以包含多个由不同艺术家创作的存储为MIDI类型或音频采样类型的作品,每个都关联着相关的版权信息。

对声音引擎的选择在1997年,SUN的JAVA媒体开发组试图找到一种方法,以增强声音的处理能力并为将来提供一个坚实的平台。

根据JAVA媒体开发组经理Michael Bundschuh所说, "我们想要非常高质量的播放引擎以处理所有的从八位μ-law级直到 CD质量声音的每一件操作。

我们希望轻松跨越所有平台,诸如Solaris平台, Windows, Mac以及其他。

我们也想要高度发展了的能够跨越不同平台的MIDI能力。

为上述目的,合理的选择是Beatnik的音频引擎(从前是 Headspace。

)"SUN取得了Beatnik的音频引擎使用许可,把它当作JAVA声音应用程序接口API的基础。

Thomas Dolby Robertson-Beatnik简介在90年代初之前,Thomas Dolby Robertson的职业完全在音乐方面。

他1982推出的"她用科学照亮了我"是一部早期的MTV巨作。

整个80年代,他都在不断地作曲和录音,使用一种非结构化音乐制作软件。

但是在 1990,通过一次为Guggenheim 博物馆演示虚拟现实的合作,他开始思考能否做一些提高音乐制作能力的工作。

"我当时正伏在 C程序员的肩上,并且我忽然熟悉到为做记录做了大量的工作,可是没有为演奏时的交互做任何事情。

"有了这样的想法,Robertson在1992年建立了 Headspace,雇用月光作曲组来帮助实现他的观点。

Headspace于1996年成为公司,现在被称为Beatnik。

JAVA声音音频引擎JAVA声音引擎为多媒体创建,同时考虑了游戏设计和发布WEB内容。

用标准的MIDI文件、RMF文件、并且/或来自任何源的采样,该引擎将播放音乐或制造音响效果,同时尽可能少用CPU。

它提供完全的播放控制,具有混合音响的能力并可实时地回应用户的输入。

JAVA声音引擎是软件 MIDI合成器,采样播放设备,以及16位立体混声器。

它支持混合直到64位的立体MIDI声音和音频采样。

它直接支持MIDI类型0和类型1文件以及从 8位设备到16位乐器的波表合成。

该引擎支持所有通用的 MIDI控制器并且包含象回声处理, LFO (控制过滤器或立体声设备)之类的特性,以及ADSR信封 (播放时整形采样)。

即使用上所有的功能,JAVA声音引擎在一个 90Mhz的奔腾计算机上也占用不超过30%的CPU时间。

它还能通过有选择地禁用不需要的特性,使其变得更加高效一些。

另外,它发布了存储在压缩的 RMF音乐文件中的丰富的内容。

Thomas Dolby Robertson 的"她用科学照亮了我",一首7分21秒的歌曲,如存储为CD音质的文件足足占用70M 字节空间。

假如以RMF格式存储只需大约636 KB,是120:1的减少,同时丝毫不减音质。

JAVA平台声音的简要历史在JDK 1.0.x及JDK 1.1.x下, AudioCl ip接口提供下列机能:l AudioClip接口播放循环停止恢复和播放声音最简单的方法是通过Applet类的play()方法。

调用play()方法有如下二种方式:play()-带有一个参数,一个 URL对象,装载并演奏储存在 URL处的声音片断。

play()-带有二个参数,基本 URL和文件夹路径名,装载并演奏声音文件。

第一参数经常是对getCodeBase()或 getDocumentBase()的调用。

下列代码片断举例说明了直接播放 hello.au的方法。

AU文件与小应用程序位于相同文件夹或目录。

play(getCodeBase(), "hello.au");play()一旦被调用马上开始恢复和播放声音。

假如声音文件不能被查找,将不会有出错信息,仅仅是沉默。

启动和停止声音文件,或循环播放,你必须用 applet的 getAudioClip方法把它装载进入 AudioClip对象,类似上面play()方法的参数,getAudioClip方法要用一个或两个参数,当作播放的指示。

第一个或唯一的一个参数是 URL参数,用来指示声音文件的位置,第二参数是文件夹路径指针。

下列代码行举例说明加载声音文件进入剪贴对象:AudioClip co = getAudioClip(getCodeBase(), "horns.wav");getAudioClip()方法仅仅能被applet内调用。

随着JAVA2的引入,应用程序也能用Applet类的newAudioClip方法装入声音文件。

前一例子可以改写如下以用于Java应用程序:AudioClip co = newAudioClip("horns.wav");在你已创建 AudioClip对象之后,你能用该对象调用play()、loop()以及stop()方法。

假如 getAudioClip或 newAudioClip方法不能找到指定的声音文件, AudioClip对象的值将是空的。

试着播放空对象会导致出错,所以标准的过程首先是对该条件进行检测。

接下来是一个完整的程序设计示例,该程序将产生一个applet,当鼠标在该小应用程序applet范围内按下时会播放 flute+hrn+mrmba.au音乐样本。

此AU示例文件与applet在相同目录或文件夹下的。

import java.applet.*;import java.awt.event.*;public class PlayAudio extends Appletimplements MouseListener {AudioClip audio;public void init() {audio = getAudioClip(getDocumentBase(),"flute+hrn+mrmba.au");addMouseListener(this);}public void mouse PR essed(MouseEvent evt) {if (audio != null) audio.play();}public void mouseEntered (MouseEvent me) {}public void mouseExited (MouseEvent me) {}public void mouseClicked (MouseEvent me) {public void mouseReleased(MouseEvent me) {}}注重:在许多JAVA2技术书籍中,mouseDown()方法确实是JAVA 1.0事件模型的一部分。

使用该方法会有一定的危险,因为该方法在将来可能不会被支持。

在JAVA2平台下将MouseListener与 mousePressed结合使用是优先的选择。

API 1.0-质的飞跃注重:下列备注是以JAVA API的早期版本0.86为基础的。

虽然目前这里讨论的大多数对象和概念与过去保持一致,但由于该API版本已经终止,出现某些改变的可能是存在的。

JAVA声音 1.0 API为JAVA平台定义了一整套的基本的底层音频处理功能。

它提供如下接口为:音频捕捉和播放IDI合成及序列化这两个主要的功能模块在各自的程序包中提供。

javax.media.sound.sampled-该程序包明确地说明了捕捉、混合以及回播数字采样音频的界面。

相关文档
最新文档