精华内容
下载资源
问答
  • 在做项目的过程中,我们往往会用到语音播报——把文字转换成语音播放出来,自动识别语言进行播报,那么我们现在来看看怎么操作: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实现语音通话,可实现 1对1通话(明确对方IP地址)或者群通话(不需要知道对方IP地址),希望能帮到更多小伙伴,直接运行main方法就可以,总共三个文件,有问题留言交流。
  • 自从Recorder H5 GitHub开源库优化后,对边录边转码成小语音片段文件实时上传服务器这种操作支持非常良好,因此以前不太好支持的H5语音通话已经有了更好的突破空间。因此花了两晚时间打造了一个H5语音通话聊天的demo...

    自从Recorder H5 GitHub开源库优化后,对边录边转码成小语音片段文件实时上传服务器这种操作支持非常良好,因此以前不太好支持的H5语音通话已经有了更好的突破空间。因此花了两晚时间打造了一个H5语音通话聊天的demo。

    欢迎在线把玩:https://xiangyuecn.github.io/Recorder/

    7c7181902a6d83c0e92cf2303b5e9d18.png

    一、把玩方法

    1. 准备局域网内两台设备(Peer A、Peer B)用最新版本浏览器(demo未适配低版本)分别打开demo页面(也可以是同一浏览器打开两个标签)
    2. 勾选页面中的H5版语音通话聊天,在Peer A中点击新建连接
    3. 把Peer A的本机信手动复制传输给Peer B,粘贴到远程信息中,并点击确定连接
    4. 把Peer B自动生成的本机信息手动复制传输给Peer A,粘贴到远程信息中,并点击确定连接
    5. 双方P2P连接已建立,使用页面上方的录音功能,随时开启录音,音频数据会实时发送给对方

    局域网H5版对讲机

    二、技术特性

    (1)数据传输

    github demo中考虑到减少对服务器的依赖,因此采用了WebRTC P2P传输功能,无需任何服务器支持即可实现局域网内的两个设备之间互相连接,连接代码也算简单。有服务器支持可能就要逆天了,不过代码也会更复杂。

    如果正式使用,可能不太会考虑使用WebRTC,用WebSocket通过服务器进行转发可能是最佳的选择。

    WebRTC局域网P2P连接要点(实际代码其实差不多,只不过多做了点兼容):

    /******Peer A(本机)******/var peerA=new RTCPeerConnection(null,null)//开启会话,等待远程连接peerA.createOffer().then(function(offer){ peerA.setLocalDescription(offer); peerAOffer=offer;});var peerAICEList=[......] //通过peerA.onicecandidate监听获得所有的ICE连接信息候选项,如果有多个网络适配器,就会有多个候选//创建连接通道对象,A端通过这个来进行数据发送var peerAChannel=peerA.createDataChannel("RTC Test");/******Peer B(远程)******/var peerB=new RTCPeerConnection(null,null)//连接到Peer ApeerB.setRemoteDescription(peerAOffer);//开启应答会话,等待Peer A确认连接peerB.createAnswer().then(function(answer){ peerB.setLocalDescription(answer); peerBAnswer=answer;});//把Peer A的连接点都添加进去peerB.addIceCandidate(......peerAICEList)var peerBICEList=[......] //通过peerB.onicecandidate监听获得所有的ICE连接信息候选项,如果有多个网络适配器,就会有多个候选var peerBChannel=... //通过peerB.ondatachannel得到连接通道对象,B端通过这个来进行数据发送/*******最终完成连接********///连接到Peer BpeerA.setRemoteDescription(peerBAnswer);//把Peer B的连接点都添加进去peerA.addIceCandidate(......peerBICEList)/*peerA peerB分别等待peerA/BChannel.onopen回调即完成P2P连接,然后通过监听peerA/BChannel.onmessage获得对方发送的信息,通过peerA/BChannel.send(data) 发送数据。*/

    (2)音频采集和编码

    由于是在我的Recorder库中新加的demo,因此音频采集和编码都是现成的,Recorder库有好的兼容性和稳定性,因此节省了最大头的工作量。

    编码最佳使用MP3格式,因为此格式已优化了实时编码性能,可做到边录边转码,16kbps 16khz的情况下可做到2kb每秒的文件大小,音质还可以,实时传输时为3kb每秒,15分钟大概3M的流量。

    用wav格式也可以,不过此格式编码出来的数据量太大,16位 16khz接近50kb每秒的实时传输数据,15分钟要37M多流量。其他格式由于暂未对实时编码进行优化,使用中会导致明显卡顿。

    降噪、静音检测等高级功能是没有的,毕竟是非专业人员 要求高点可以,但不要超出范围太多啦。

    (3)音频实时接收和播放

    接收到一个音频片段后,本应该是立即播放的,但由于编码、网络传输导致的延迟,可能上个片段还未播放完(甚至未开始播放),因此需要缓冲处理。

    因为存在缓冲,就需要进行实时同步处理,如果缓冲内积压了过多的音频片段,会导致语音播放滞后太多,因此需要适当进行对数据进行丢弃,实测发现网络正常、设备性能靠谱的情况下基本没有丢弃的数据。

    然后就是播放了,本应是播完一个就播下一个,测试发现这是不靠谱的。因为结束一个片段后再开始播放下一个发出声音,这个过程会中断比较长时间,明显感觉得出来中间存在短暂停顿。因此必须在片段未播完时准备好下一个片段的播放,并且提前开始播放,达到抹掉中间的停顿。

    我写了两个播放方式:

    1. 实时解码播放
    2. 双Audio轮换播放

    最开始用一个Audio停顿感太明显,因此用两个Audio轮换抹掉中间的停顿,但发现不同格式Auido播放差异巨大,播放wav非常流畅,但播放mp3还是存在停顿(后面用解码的发现是得到的PCM时长变长了,导致事件触发会出现误差,为什么会变长?怪异)。

    因此后面写了一个解码然后再播放,mp3这次终于能正常连续播放了,wav格式和双Audio的播放差异不大。实时解码里面也用到了双Audio中的技巧,其实也是用到了两个BufferSource进行类似的轮换操作,以抹掉两个片段间的停顿。

    不过最终播放效果还是不够好,音质变差了点,并且多了点噪音。如果有现成的播放代码拿过来用就就好了。

    三、应用场景

    1. 数据传输改成WebSocket,做个仿微信语音通话H5版还是可以的(受限于Recorder浏览器支持)
    2. 局域网H5版对讲机(前端玩具)
    3. ......没有想到

    完。

    展开全文
  • 现在,我正在尝试在其中添加语音通话功能.因此,尝试搜索一些教程,大多数使用PubNub或大多数教程基于Web应用程序.我看到了这个stackoverflow线程,并且知道可以在Firebase中使用webrtc.在尝试了一些教程之后,我编写了这...

    我以前从未尝试过webrtc.我有一个使用Firebase制作的应用程序.现在,我正在尝试在其中添加语音通话功能.

    因此,尝试搜索一些教程,大多数使用PubNub或大多数教程基于Web应用程序.

    我看到了这个stackoverflow线程,并且知道可以在Firebase中使用webrtc.

    在尝试了一些教程之后,我编写了这段代码,

    PeerConnectionFactory.initializeAndroidGlobals(this,false,true,true);

    PeerConnectionFactory peerConnectionFactory = new PeerConnectionFactory();

    AudioSource audioSource = peerConnectionFactory.createAudioSource(new MediaConstraints());

    AudioTrack audioTrack = peerConnectionFactory.createAudioTrack("4444",audioSource);

    audioTrack.setEnabled(true);

    MediaStream mediaStream = peerConnectionFactory.createLocalMediaStream("4444");

    mediaStream.addTrack(audioTrack);

    但是后来我很困惑如何使用Firebase与其他设备共享流.需要帮忙 :(

    展开全文
  • golang调用阿里云的语音通话 官方目前只给出python和java的示例,而没有go的示例,这段代码是经过测试无误的。 client4, err := dyvmsapi.NewClientWithAccessKey("cn-hangzhou", "xxxxxxxx", "xxxxxxxxxxx") if ...

    golang调用阿里云的语音通话
    官方目前只给出python和java的示例,而没有go的示例,这段代码是经过测试无误的。

    client4, err := dyvmsapi.NewClientWithAccessKey("cn-hangzhou", "xxxxxxxx", "xxxxxxxxxxx")
    		if err != nil {
    			panic(err.Error())
    		}
    		request := dyvmsapi.CreateSingleCallByTtsRequest()
    		request.AcceptFormat = "json"
    		request.CalledShowNumber = "01086394658"
    		request.CalledNumber = "134xxxxxxxx"
    		request.TtsCode = "TTS_174276778"
    		request.TtsParam = "{\"location\":\"xxxx\"}"
    		response := dyvmsapi.CreateAddRtcAccountResponse()
    		err2 := client4.DoAction(request,response)
    		if err2 != nil{
    			panic(err2.Error())
    		}
    		fmt.Println(response)
    
    展开全文
  • 实现了android端实时语音通话,可以本机自连也可以和别的端连接通话,默认的模式是外连模式,要想自连测试需要把Global.java中的sendToSelf静态变量改为true。本例子实现的是局域网的实时语音.rar,太多无法一一验证...
  • 您好群主,git上下下来后,运行testAgular的代码,...FATAL EXCEPTION: mainProcess: com.zhijiaiot.app, PID: 20123java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.zhijiaiot.ap...
  • 文件名称: sipdroid下载 收藏√ [5 4 3 2 1]开发工具: Java文件大小: 4013 KB上传时间: 2013-02-26下载次数: 15详细说明:开源的voip软件,可以实现语音通话,实时对讲.-Open source voip software, voice calls, ...
  • 此外,用户可以与其他用户或组进行音频和视频通话。** 先决条件 :star: 开始之前,请确保您满足以下要求: :check_mark_button: 您的计算机中已安装Android Studio 。 :check_mark_button: 您拥有具有Android 6.0...
  • 语音及视频通话

    2015-07-28 15:15:24
    sipdroid语音及视频通话实例源码,为Android客户端而开发,以前写过Java的应该对此代码很熟悉,这个开源项目在国外也是受到认可的,很多视频通话应用也是在此基础上扩展修改而来,你可借鉴本源码实例包。
  • Java 语音实时

    2015-06-10 21:48:42
    Java实现实时通话 通过Socket来实现的 要的就来下载吧
  • Android语音及视频通话例子

    千次下载 热门讨论 2013-07-26 23:23:20
    sipdroid语音及视频通话实例源码,为Android客户端而开发,以前写过Java的应该对此代码很熟悉,这个开源项目在国外也是受到认可的,很多视频通话应用也是在此基础上扩展修改而来,你可借鉴本源码实例包。
  • java网络语音对话代码

    2014-04-07 18:32:02
    可以进行网络语音对话。也可以文字通话java源代码。
  • 1.说明 freeswitch mod_verto提供了一个基于webrtc的js模块,该模块可以通过网页拨打电话、开...体验地址在http://blog.csdn.net/java_lilin/article/details/78391819有提到 2.由于要视频所以要编译源码的mod...
  • 微信语音通话(听筒模式),音量侧键不能调音量 [SOLUTION] google参考机也是如此,不过可以按如下修改:   alps\frameworks\base\media\java\android\media\AudioService.java 1.private boolean ...
  • 最近在研究语音识别,使用百度的sdk。发现只有识别的部分,而我需要保存音频文件,并且实现当有声音传入时自动生成音频文件。先上代码:public class EngineeCore {String filePath = "E:\\voice\\voice_cache.wav";...
  • 现在,我正在尝试在其中添加语音通话功能.因此,尝试搜索一些教程,大多数使用PubNub或大多数教程基于Web应用程序.我看到了这个stackoverflow线程,并且知道可以在Firebase中使用webrtc.在尝试了一些教程之后,我编写了这...
  • 其最广泛的应用则是某些网上的IP电话,大家经常可以看到不少这种提供在线IP电话服务的网站的客户端都是使用的嵌在网页上的Java Applet程序,用来实现拨号、通话等等基本的网络电话功能; 第二种方案则是我们今天要...
  • 如果觉得下面的麻烦可以...源码功能性更好、更完善。 想测试apk请加群261074724 最新的sdk4教程地址https://blog.csdn.net/Java_lilin/article/details/84842314 前面两篇介绍了注册、拨打、接听等 参考地址htt...
  • 呼叫中心是企业销售、客服与客户连接的桥梁,AI技术可应用于...(2)在人工外呼结束后,基于语音识别和NLP技术实现的语音质检系统可以对通话录音进行分析挖掘,自动发现违规录音,这可以规范化销售、客服工作,提高...
  • 如需转载请联系(微信号:834436689)以获得授权导读58同城拥有数千名销售和客服人员,每年会拨打数百万小时的电话,我们构建了一套智能语音质检系统,利用语音识别技术将语音转化成文本,然后利用NLP技术对通话文本...
  • 由于这个java限制现在我正在使用原生的android代码来录制语音通话.我设法使用native-audio录音机为录音机录制音频.问题出在本机代码中,它只记录单侧语音,传入的语音没有被记录.然后我尝试了语音通信...
  • ### 利用java socket实现即时语音通信基本思路​ 利用javax.sound.sampled 包中的方法可以很方便的实现,获取拾音器音频输入的内容,和写入音频输出的混频器中。结合socket可以实现点对点语音通话
  • 如果觉得下面的麻烦可以...源码功能性更好、更完善。 想测试apk请加群261074724  最新的sdk4教程地址 https://blog.csdn.net/Java_lilin/article/details/84842314 在前一篇我写了关于sip注册的 可以参考http...
  • 如果觉得下面的麻烦可以直接到...源码功能性更好、更完善。 想测试apk请加群261074724 最新的sdk4教程地址https://blog.csdn.net/Java_lilin/article/details/84842314 linphone桌面版教程https://bl...
  • 配合Android端Java版本业务逻辑,实现基本的呼叫、响铃、语音通话、视频通话的功能 nodejs_copy 将nodejs版本https://github.com/ddssingsong/webrtc_server_node 使用java写了一遍 信令相关 登录成功,返回个人...
  • android即时通话项目

    热门讨论 2014-07-22 23:54:20
    主要是为了学习android基础知识,所以做的比较简单,语音通话的降噪和回音消除都没有做,有兴趣的朋友可以继续做下去,建议用rtp实现语音传输,同时用一些开源库降噪如speex。解压后的两个文件夹分别是服务器项目和...
  • Android 9.0 视频通话流程

    千次阅读 2019-05-28 16:46:33
    1、RILD 接收到,+EIMSCMODE 命令(用来定义视频通话和语音通话之间的切换) 2、ImsRILAdapter.java vendor\proprietary\packages\services\Ims\src\com\mediatek\ims\ril 给ImsRILAdapter发送RIL_UNSOL_VIDEO_...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 148
精华内容 59
关键字:

语音通话java

java 订阅