终于用java实现了语音聊天,贴出代码来,一起学习,嘿嘿。

import java.net.*;

import javax.sound.sampled.*;

/**

* 把接收到的信息传到麦克,即播放

*/

public class ChartReceive extends Thread {

//格式

private AudioFormat format = new AudioFormat(

AudioFormat.Encoding.PCM_SIGNED, 44100.0f, 16, 1, 2, 44100.0f, false);

//管道

private SourceDataLine line;

private byte[] data;

public ChartReceive() {

try {

DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);

line = (SourceDataLine) AudioSystem.getLine(info);

} catch (Exception e) {

e.printStackTrace();

}

}

public void run() {

System.out.println("receive threading start");

int length=(int)(format.getFrameSize()*format.getFrameRate()/2.0f);

try{line.open(format);line.start();

DatagramSocket socket=new DatagramSocket(ChartSend.PORT);

while(true){

//数组的创建载什么时候,是否影响数据信息?

data=new byte[length];

DatagramPacket dp=new DatagramPacket(data,data.length);

socket.receive(dp);

line.write(data,0,data.length);

System.out.println("receive success "+new String(data,"UTF-8"));

}

}catch(Exception e){

e.printStackTrace();

}

}

}

/**

* 聊天时把自己的消息发送到对方

* */

import java.io.IOException;

import java.net.*;

import javax.sound.sampled.*;

public class ChartSend extends Thread {

public static final int PORT = 3333;

private InetAddress toIp;// 目的ip

private TargetDataLine line;// 管道

private byte[] data;// 存放每次从麦克获得的数据

// 格式

/**

* 脉冲编码调制:pcm、mu-law编码和a-law编码

* 信道数:单声道有一个信道,立体声有两个信道

* 样本速率:测量每信道、每秒钟采用的声压快照数,不管声道数是多少,速率都一样。

* 样本大小:指示用于存储每个快照的位数,典型值是8和16,对于16位样本,字节顺序很重要

* 每个样本中的字节或者以little-endian或者以big-endian样式排列。

* 对于PCM编码,帧是由在给定时间点上所有声道的样本集合组成,因此帧的大小总是等于样本大小成一声道数。

*

* 声道编码,每秒播放或者录制的样本数,声音样本中的位数,音频信道数,每秒播放或者录制的帧数 ,

* 以 big-endian 顺序还是 little-endian 顺序存储音频数据

* */

private AudioFormat format = new AudioFormat(

AudioFormat.Encoding.PCM_SIGNED, 44100.0f, 16, 1, 2, 44100.0f, false);

/**

* @param toIp 发送目的地的ip

* */

public ChartSend(InetAddress toIp) {

this.toIp = toIp;

DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);

try {

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

} catch (LineUnavailableException e) {

e.printStackTrace();

}

}

public void run() {

System.out.println("send threading start");

try {

line.open(format, line.getBufferSize());

line.start();

int length = (int) (format.getFrameSize() * format.getFrameRate() / 2.0f);

while (true) {

data = new byte[length];

line.read(data, 0, data.length);

sendData();

}

} catch (LineUnavailableException e) {

e.printStackTrace();

}

}

/**

* 使用UDP协议传输声音

*/

private void sendData() {

try {

DatagramPacket dp = new DatagramPacket(data, data.length, toIp,

PORT);

DatagramSocket ds = new DatagramSocket();

ds.send(dp);

ds.close();

System.out.println("send success");

} catch (SocketException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

真不知道百度这最大长度是怎么计算的。本来想好好整理一下格式。我先把代码复制到word里,然后从word里拷过来,这样就可以保证格式和开发工具里的一样,便于阅读,可以总是提示超过了最大长度。如果直接粘贴过来,就没事了。

分享到:

2012-03-13 13:02

浏览 5976

评论

你好,可以提供调用方法吗?需要的Jar,能发下源码吗?谢谢

3 楼

alexly61

2013-08-17

很强大!后台原理基本上看懂了,就是怎样提供语音接口呢,前台通过的麦克输出,怎样调用上面的代码呢,请指点下。

2 楼

高级java工程师

2012-04-25

lxy66_88 写道

很强大  学习了

1 楼

lxy66_88

2012-04-19

很强大  学习了

java语音_java实现语音相关推荐

  1. java语音_JAVA 实现语音播报

    准备工作: 下载jar包,链接:https://pan.baidu.com/s/1qXPgCzy 密码:xigv 解压jar包,将jacob.jar复制到工程目录,右键该文件→Build Path→A ...

  2. java对接天猫精灵语音助手实现对公司其下的智能设备进行控制(附上源码)

    java对接天猫精灵语音助手实现对公司其下的智能设备进行控制 前言当初刚来广州 公司上一任java已经离职半年 ,项目已经跑不动了,才招人的,所以我获得的是一个连跑都跑不起来的项目源码并且对项目一无所 ...

  3. JAVA将文字转语音文件

    JAVA将文字转语音文件 public class MediaDemoApplication {public static void main(String[] args) {textToSpeech ...

  4. Java 语音识别(百度语音API)

    系列文章: Java 语音记录(录音,存储为WAV文件):https://blog.csdn.net/haoranhaoshi/article/details/87888382 Java 语音识别(百 ...

  5. java上传一段语音_在java程序中加入语音功能,例如给段字符串“A101”,就能发出声音,请大家帮帮忙,谢谢...

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

  6. 关于java使用jacob进行语音播报时报错:com.jacob.com.ComFailException: Can‘t get object clsid from progid

    关于java使用jacb进行语音播报时报错:com.jacob.com.ComFailException: Can't get object clsid from progid 出现此错误一般是由于w ...

  7. 【项目管理】Java离线版语音识别-语音转文字

    Java离线版语音识别-语音转文字 1.项目前言 2.Vosk介绍 3.项目开发 3.1 项目准备 3.2 model 准备 3.3 测试音频准备 3.4 代码实现 4.效果演示 4.1 界面效果 4 ...

  8. java 实现文字转语音功能并同时生成语音文件 demo

    文字转语音功能并同时生成语音文件 这个demo实现的是 你传输一个字符串对象 程序把你传输的对象里的字符串 转成一个可读的语音文件 并且会在你本机读出来 !!!如果没有读出来请首先检查你电脑的声音是否 ...

  9. 阿里云 语音服务-国内语音服务

    @阿里云 语音服务-国内语音服务 前言 公司需要实现一个业务,前台访客来访电话通知,这儿涉及到了语音通信,通过查阅资料了解到了阿里云正好提供这样一个服务 阿里云语音服务的介绍:语音服务(Voice M ...

最新文章

  1. 如何从KDE中切換到openSUSE的GNOME桌面环境
  2. 壁咚Java 彻底搞定String、StringBuilder、StringBuffer
  3. CLR via C#深解笔记二 - 类型设计
  4. Linux系统下挂载Windows分区
  5. win10家庭版gpedit.msc无法打开本地组策略
  6. 数据仓库与联机分析处理技术
  7. Warning:java: 来自注释处理程序 'org.antlr.v4.runtime.misc.NullUsageProcessor' 的受支持 source 版本 'RELEASE_6' 低于
  8. hdu1711(kmp纯模板)
  9. 为什么Android项目mainactivity中有一个变量R_安卓4:第一个安卓程序 AS 安卓项目结构解析 手机运行app 模拟器运行app...
  10. 只用几行代码,我让模型『训练』加速了3倍以上!
  11. 演说之禅:幻灯片的演说是多多益善吗?
  12. shop++ jtm2.5最新版本发布
  13. 技术分析:细说3D投影机技术原理
  14. 微信分组群发45028,微信分组群发has no masssend quota hint
  15. 让你终生受用的时间管理技巧
  16. 听书项目开发过程及重难点总结(用户管理)
  17. Shell脚本常见问题
  18. GNSS说第(七)讲---自适应动态导航定位(六)---导航解算中的误差探测、诊断与修复
  19. 什么是:堡垒机、虚拟专用网、日志审计、数据库防水坝、防火墙
  20. 船舶信息查询网址汇集

热门文章

  1. windows10强制删除文件_Windows 10、8、7的7种最佳磁盘分区软件
  2. 电镀面积计算机公式,电镀工件面积的计算:工件面积计算的方法
  3. 国开电大 传感器与测试技术 形考任务
  4. 2019NH TEA 小学 第四题 扑克牌
  5. 蓝桥杯java组多少分能拿奖_记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结
  6. 学习笔记8--车辆制动系统
  7. 计算机技术发展趋势是什么,计算机以后的发展趋势是什么?
  8. 淘宝开店营销技术全面视频教程
  9. 诺基亚手机有多少个系列?
  10. DBCA时,报DBT-08001、DBT-08002