精华内容
下载资源
问答
  • 基于Java实现语音通话,可实现 1对1通话(明确对方IP地址)或者群通话(不需要知道对方IP地址),希望能帮到更多小伙伴,直接运行main方法就可以,总共三个文件,有问题留言交流。
  • Java实现语音播报
  • Java实现的实时语音聊天,需要的可以参考一下,应该会有帮助。1111111111111111111111111111111111
  • java语音播报案例

    2021-03-01 10:11:25
    在做项目的过程中,我们往往会用到语音播报——把文字转换成语音播放出来,自动识别语言进行播报,那么我们现在来看看怎么操作:1.下载jacob.jar,下载地址:这里2.32位操作系统下载:jacob-1.17-M2-x32.dll,64位...

    在做项目的过程中,我们往往会用到语音播报——把文字转换成语音播放出来,自动识别语言进行播报,那么我们现在来看看怎么操作:

    1.下载jacob.jar,下载地址:这里

    2.32位操作系统下载:jacob-1.17-M2-x32.dll,64位操作系统下载:jacob-1.17-M2-x64.dll,下载地址:这里

    3.将jacob.jar考到项目中进行构建路径。

    4.将jacob-1.17-M2-x32.dll或者jacob-1.17-M2-x64.dll,考到系统盘:\Windows\System32\下面。

    5.将jacob-1.17-M2-x32.dll或者jacob-1.17-M2-x64.dll,考到JDK安装目录的bin下面。

    然后写个test方法测试一下即可,测试代码如下:

    /**

    * @Title: Voice.java

    * @Package org.util

    * @Description: TODO该方法的主要作用:

    * @author A18ccms A18ccms_gmail_com

    * @date 2017-7-3 下午9:03:45

    * @version V1.0

    */

    package cn.bdqn.bdqn.utils;

    import org.junit.Test;

    import com.jacob.activeX.ActiveXComponent;

    import com.jacob.com.Dispatch;

    import com.jacob.com.Variant;

    /**

    *

    * 项目名称:avoice

    * 类名称:Voice

    * 类描述: 语音播报工具类

    * 创建人:Mu Xiongxiong

    * 创建时间:2017-7-3 下午9:03:45

    * 修改人:Mu Xiongxiong

    * 修改时间:2017-7-3 下午9:03:45

    * 修改备注:

    * @version

    *

    */

    public class Voice {

    /**

    *

    * @Title: strat

    * @Description: 该方法的主要作用:朗读

    * @param @param content

    * @param @param type 设定文件 0:开始,1停止

    * @return 返回类型:void

    * @throws

    */

    public void strat(String content, int type) {

    // ?? 这个Sapi.SpVoice是需要安装什么东西吗,感觉平白无故就来了

    ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");

    // Dispatch是做什么的?

    Dispatch sapo = sap.getObject();

    if (type == 0) {

    try {

    // 音量 0-100

    sap.setProperty("Volume", new Variant(100));

    // 语音朗读速度 -10 到 +10

    sap.setProperty("Rate", new Variant(1.3));

    Variant defalutVoice = sap.getProperty("Voice");

    Dispatch dispdefaultVoice = defalutVoice.toDispatch();

    Variant allVoices = Dispatch.call(sapo, "GetVoices");

    Dispatch dispVoices = allVoices.toDispatch();

    Dispatch setvoice = Dispatch.call(dispVoices, "Item",

    new Variant(1)).toDispatch();

    ActiveXComponent voiceActivex = new ActiveXComponent(

    dispdefaultVoice);

    ActiveXComponent setvoiceActivex = new ActiveXComponent(

    setvoice);

    Variant item = Dispatch.call(setvoiceActivex, "GetDescription");

    // 执行朗读

    Dispatch.call(sapo, "Speak", new Variant(content));

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    sapo.safeRelease();

    sap.safeRelease();

    }

    } else {

    // 停止

    try {

    Dispatch.call(sapo, "Speak", new Variant(content), new Variant(

    2));

    } catch (Exception e) {

    System.out.println(e.getMessage());

    e.printStackTrace();

    }

    }

    }

    /**

    *

    * @Title: test

    * @Description: 该方法的主要作用:执行朗读内容

    * @param 设定文件

    * @return 返回类型:void

    * @throws

    */

    @Test

    public void test()

    {

    strat("语音朗读的内容", 0);

    }

    }

    展开全文
  • java实现语音

    2021-02-12 09:51:55
    终于用java实现了语音聊天,贴出代码来,一起学习,嘿嘿。import java.net.*;import javax.sound.sampled.*;/*** 把接收到的信息传到麦克,即播放*/public class ChartReceive extends Thread {//格式private ...

    终于用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里拷过来,这样就可以保证格式和开发工具里的一样,便于阅读,可以总是提示超过了最大长度。如果直接粘贴过来,就没事了。

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2012-03-13 13:02

    浏览 5976

    评论

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

    966903dea4bcb507358d5dcce8b912e5.gif

    3 楼

    alexly61

    2013-08-17

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

    2 楼

    高级java工程师

    2012-04-25

    lxy66_88 写道

    很强大  学习了

    966903dea4bcb507358d5dcce8b912e5.gif

    1 楼

    lxy66_88

    2012-04-19

    很强大  学习了

    展开全文
  • Java语音聊天

    热门讨论 2011-11-28 10:25:31
    一个Java语音聊天工具,可实现如同QQ或其它语音聊天一样的功能
  • sip实现语音通话

    2018-05-13 17:19:25
    sip实现语音通话,添加权限,"android.permission.USE_SIP
  • java 语音聊天核心代码

    千次阅读 2021-03-05 17:39:04
    import java.io.*;import javax.sound.sampled.*;import java.net.*;class Playback implements Runnable {final int bufSize = 16384;SourceDataLine line;Thread thread;Socket s;Playback(Socket s){//构造器 ...

    import java.io.*;

    import javax.sound.sampled.*;

    import java.net.*;

    class Playback implements Runnable {

    final int bufSize = 16384;

    SourceDataLine line;

    Thread thread;

    Socket s;

    Playback(Socket s){//构造器 取得socket以获得网络输入流

    this.s=s;

    }

    public void start() {

    thread = new Thread(this);

    thread.setName("Playback");

    thread.start();

    }

    public void stop() {

    thread = null;

    }

    public void run() {

    AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)

    BufferedInputStream playbackInputStream;

    try {

    playbackInputStream=new BufferedInputStream(new AudioInputStream(s.getInputStream(),format,2147483647));//封装成音频输出流,如果网络流是经过压缩的需在此加套解压流

    }

    catch (IOException ex) {

    return;

    }

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

    try {

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

    line.open(format, bufSize);

    } catch (LineUnavailableException ex) {

    return;

    }

    byte[] data = new byte[1024];//此处数组的大小跟实时性关系不大,可根据情况进行调整

    int numBytesRead = 0;

    line.start();

    while (thread != null) {

    try{

    numBytesRead = playbackInputStream.read(data);

    line.write(data, 0,numBytesRead);

    } catch (IOException e) {

    break;

    }

    }

    if (thread != null) {

    line.drain();

    }

    line.stop();

    line.close();

    line = null;

    }

    }

    //音频捕获部分,

    import java.io.*;

    import javax.sound.sampled.*;

    import java.net.*;

    /**

    * Title:        VoiceChat

    * Description:  音频捕捉(录音程序)

    * Copyright:    Copyright (c) 2001

    */

    class Capture implements Runnable {

    TargetDataLine line;

    Thread thread;

    Socket s;

    BufferedOutputStream captrueOutputStream;

    Capture(Socket s){//构造器 取得socket以获得网络输出流

    this.s=s;

    }

    public void start() {

    thread = new Thread(this);

    thread.setName("Capture");

    thread.start();

    }

    public void stop() {

    thread = null;

    }

    public void run() {

    try {

    captrueOutputStream=new BufferedOutputStream(s.getOutputStream());//建立输出流 此处可以加套压缩流用来压缩数据

    }

    catch (IOException ex) {

    return;

    }

    AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)

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

    try {

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

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

    } catch (Exception ex) {

    return;

    }

    byte[] data = new byte[1024];//此处的1024可以情况进行调整,应跟下面的1024应保持一致

    int numBytesRead=0;

    line.start();

    while (thread != null) {

    numBytesRead = line.read(data, 0,128);//取数据(1024)的大小直接关系到传输的速度,一般越小越快,

    try {

    captrueOutputStream.write(data, 0, numBytesRead);//写入网络流

    }

    catch (Exception ex) {

    break;

    }

    }

    line.stop();

    line.close();

    line = null;

    try {                captrueOutputStream.flush();                captrueOutputStream.close();            } catch (IOException ex) {                ex.printStackTrace();            }        }      }

    展开全文
  • 1:这种语言交互的功能用JSDT2-0能实现吗?如果用JSDT来做的话。因为它有个PHONE的功能。不过效果不是蛮好,我测了一下。2:具体的声音采集,压缩,还要考虑到速度,怎么...|你好,我也在思考如何用Java实现语音交...

    1:这种语言交互的功能用JSDT2-0能实现吗?如果用JSDT来做的话。因为它有个PHONE的功能。不过效果不是蛮好,我测了一下。

    2:具体的声音采集,压缩,还要考虑到速度,怎么实现呢?

    3:谁做过的给我点思路好吗?如果不用JSDT开发的话。

    4:我也搜索了以前的贴子,还有我用GOOGLE个搜,没有什么讲这方面的

    很具体的 例子。

    哪位讨论一下好吗?分来了的都有的。

    |

    你好,我也在思考如何用Java实现语音交互的功能。给你一个思路,JSDT和JMF地结合可以很好的实现语音交互。JMF,即Java Media Framework,可以很好的解决你所提的问题。具体的可以到 SUN的网站上去查。我的QQ是:38350637

    |

    用jmf来做数据采集

    传输用什么来实现

    jsdt是什么??

    说说了

    |

    很感兴趣,可惜我java是刚用不久

    Java Shared Data Toolkit(JSDT)提供了类似电子白板的数据共享和通信的应用的功能,为实现原型系统的电子白板提供了方便。JSDT提供了三种传输协议实现,TCP Socket,HTTP和LRMP

    |

    不知道你的详细要求是什么,用JMF来实现吧。

    http://java.sun.com/products/java-media/jmf/2.1.1/solutions/index.html上面的例子多的是,声/视频的点对点.....

    |

    用JMF可以实现吧,在sun的网站上有相关的例子

    但是JMF是点到点的,而且还要在客户端进行安装,很大的

    我决的不如C/C++开发的语音聊天系统好用

    |

    偶开发了一个类似的系统。。呵呵

    use JMF

    |

    我也用JMF做过一个类似的系统。

    其实JMF也要在客户端安装一些东西(不过,你也可以直接把几个jar文件拷过去自己来配置而不需要JMF的安装程序)。

    用JMF是做Java的网络多媒体的首选,它封装了RTP,使用非常方便。

    JSDT似乎可以做电子白板之类的东西,值得研究(以前做一个电子白板是自己写Socket,定义消息来实现的,效果并不好)。

    |

    我最近也在用java,jmf做关于语音,视频传输方面,用jmf做语音传输不难,

    在sun网站上有两个类,AVTransmit2.java,AVReceive2.java,一个实现传输,一个实现接收,RTP管理什么的都为你做好了,你只有嵌入就好了,很好用,我们可以交流一下。

    |

    现在说思路真得很难,你可以先去下一个JMF,看一下文档和例子。

    对照你的需求,看它能否满足你的要求,我们再讨论吧。

    |

    你可以去反编译一些东西,可能会有帮助。

    |

    我下了个JMF2.1.1怎么没有SOUND.JAR是不是不需要,但是APLET测试时总是提示JMF--NOTFOUND,我设了PATH 和CLASSPATH等,怎么不行呢,我下了那个ZIP文件后,解压,然后把JMF考出放到C:JMF2.1.1,不行

    谁知道怎么解决?听说可以直接安装,是怎么回事?

    |

    这里有介绍吧

    http://java.sun.com/products/java-media/

    |

    下的jmf是一个exe程序,需安装的。

    |

    真的很有兴趣

    不过我还是比较 喜欢,手机编程

    |

    这么高深的问题!

    关注一下了。

    |

    帮你up以下了

    如果写出来给我一份代码

    祝你成功

    |

    如果写出了,千万要告诉一声啊。

    |

    upupup

    |

    希望大家继续讨论

    在听了~~~

    |

    呵呵,发不了言,只能来UP和学习了

    |

    肯定是可以实现的.....yahoo的聊天室就是例子..... ;-)

    展开全文
  • webRTC语音视频通话demo

    2019-04-26 10:33:24
    包含webRTC安卓客户端代码和webRTC nodejs服务端代码 安卓客户端对应服务的ip和port需要修改string.xml 服务端运行在terminal中执行 - npm install - npm start 服务默认会运行在3000端口,你可以在浏览器中打开...
  • 此外,用户可以与其他用户或组进行音频和视频通话。** 先决条件 :star: 开始之前,请确保您满足以下要求: :check_mark_button: 您的计算机中已安装Android Studio 。 :check_mark_button: 您拥有具有Android 6.0...
  • JAVA 实现语音播报

    千次阅读 2019-01-21 13:55:25
      准备工作: ...关于java使用jacob.jar调用word的配置问题  最近用到了jacob.jar来转换word文件,出现一些问题都是关于配置的,先将一些配置说明一下,以供大家参考。 文件下载地址, ...
  • java中TargetDataLine 接口提供从目标数据行的缓冲区读取所捕获数据的方法,SourceDataLine接口提供将音频数据写入数据行的缓冲区中的方法。如从音频捕获设备获取其数据的数据行。调用start方法开始执行操作。调用...
  • Kit构建)是一款功能齐全的实时消息传递应用程序,能够进行私人(一对一),组消息传递,语音和视频通话。 特征 登录 私人(1-1)和小组对话 语音和视频通话与会议 富媒体附件 打字指标 文字,媒体和自定义消息 阅读...
  • java网络语音对话代码

    2014-04-07 18:32:02
    可以进行网络语音对话。也可以文字通话java源代码。
  • 本资源是本人前面发过的一个局域网聊天工具的升级版。...代码保证可用,如有问题请留言,代码较规范,结构清晰,相信对学习java socket编程和swing界面开发的朋友有一定的帮助。 注:main函数在MainFrame类
  • Java做一个最简单的通话程序作者:未知文章来源:www.jspcn.net发布日期:2005年01月19日Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一。在Java中有一个专门的Java.net类库来管理网络编程的有关...
  • 在国内我找到了一个比較好音视频通信解决方式(百度下载官方Anychat for Android 的demo),该案例提供了纯Java语言接口供我们调用,随后我參照官方android demo程序和开发文档并结合自己的见解写了一个android音频...
  • 【实例简介】本资源是本人前面发过的一个局域网聊天工具的升级版。具体功能有:1.采用了全新的界面风格(新增)2...代码保证可用,如有问题请留言,代码较规范,结构清晰,相信对学习java socket编程和swing界面开发的...
  • 才会发起视频通话的请求 这里我主要贴一下服务端的代码,其实服务端代码很简单,就是收到用户的请求,发送给另外一个用户就可以了,这里处理的其实是用户WebRTC的一些信息,并不是去传输视频,如下: import java.io...
  • Working on a college assignment here and a bit stuck. The assignment is to send voice and video over a network using SIP.... Alterntively have you tried binging "Java Voice and Video over SIP"...
  • Java微信语音开发

    千次阅读 2016-06-13 09:10:06
    -环境、框架 1、服务器:tomcat8.0.32 2、后台框架:jfinal2.2 3、数据库:无 ...至此,微信语言开发的流程基本结束,前端返回语音路径用audio标签播发即可 sauronsoftware.jar下载 wechat4j.jar
  • ### 利用java socket实现即时语音通信基本思路​ 利用javax.sound.sampled 包中的方法可以很方便的实现,获取拾音器音频输入的内容,和写入音频输出的混频器中。结合socket可以实现点对点语音通话
  • udp Java编程实现通话

    2018-02-23 17:28:51
    Java中网络通讯也称作Socket(套接字、插座),要通讯的两台机器必须安装Socket. 不同的协议就有不同的Socket。 udp通讯协议特点: 1.将数据及其源和目的的封装为数据包,面向无连接 2.每个数据包大小限制64K中...
  • 自从Recorder H5 GitHub开源库优化后,对边录边转码成小语音片段文件实时上传服务器这种操作支持非常良好,因此以前不太好支持的H5语音通话已经有了更好的突破空间。因此花了两晚时间打造了一个H5语音通话聊天的demo...
  • (实现代码比较简单,注释挺清晰,可下载后直接运行,jdk中的包就够用了)贴上代码地址,有问题欢迎留言交流: ... ------ ----------- - ------------------------------------------------ ------------------------...
  • 【转】用Java实现网络语音信号传送

    千次阅读 2018-08-21 11:27:16
    其最广泛的应用则是某些网上的IP电话,大家经常可以看到不少这种提供在线IP电话服务的网站的客户端都是使用的嵌在网页上的Java Applet程序,用来实现拨号、通话等等基本的网络电话功能; 第二种方案则是我们今天要...
  • 现在,我正在尝试在其中添加语音通话功能.因此,尝试搜索一些教程,大多数使用PubNub或大多数教程基于Web应用程序.我看到了这个stackoverflow线程,并且知道可以在Firebase中使用webrtc.在尝试了一些教程之后,我编写了这...
  • java安卓辅助源码 @ 应用展示 前景 曾经一直想做一款关于微信的软件,目标就是网上收集很多调皮捣蛋的语音或者录音变声,然后发送给某个微信好友,感觉很有意思 开发遇到的难题 收集很多好玩的语音素材 录制的音频如何...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,260
精华内容 2,504
关键字:

java通话语音

java 订阅