导航:首页 > 操作系统 > android语音传输

android语音传输

发布时间:2022-09-06 15:15:22

A. 有人用SIP做过android客户端的多人语音通话吗

我在这里先给出我了解到的资料。 相关技术:
1.sip 2.nat穿越 3.语音编解码 4.语音传输(rtp)
以上四个技术点其实就是sip电话里面的四个模块,sip负责会话创建、维护、中断等;nat穿越就是传说中的p2p打洞,需要stun服务器配合。将语音数据按照某种格式编码,交给传输层传输,传输通常是基于udp的rtp流。
相关协议:
1.sip 2.sdp 3.stun、turn、ice 4.rtp
sip,Session Initiation Protocol,会话初始协议是一个协议栈,集合了注册,呼叫,接听,挂断等相关协议;sdp是会话描述协议,我的理解TA是让两个通讯方指定通讯规则,比如用何种协议传输,音频是何种格式等等,stun、turn、ice是nat穿越使用的,stun采用p2p打洞,turn采用的是转发,ice只是考虑当前环境适合何种方案,然后选择相应解决办法。rtp是实时传输协议,TA其实包括rtp和rtcp两个协议,负责将语音数据的传输。

B. 如何调用android的文字转语音

虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上。当用户不能查看设备时,则需要一些其他通信的方法。Android提供了强大的文字转语音Text-to-Speech,TTS API。使开发者能够在应用中添加语音通知和其他语音反馈功能,而不要求用户看着屏幕。
下面的代码展示了如何使用TTS API:

public class TextToSpeechDemo implements TextToSpeech.OnInitListener {
private final TextToSpeech mTextToSpeech;//TTS对象
private final ConcurrentLinkedQueue mBufferedMessages;//消息队列
private Context mContext;
private boolean mIsReady;//标识符

public TextToSpeechDemo(Context context){
this.mContext=context;//获取上下文
this.mBufferedMessages=new ConcurrentLinkedQueue();//实例化队列
this.mTextToSpeech=new TextToSpeech(this.mContext,this);//实例化TTS
}

//初始化TTS引擎
@Override
public void onInit(int status) {
Log.i("TextToSpeechDemo",String.valueOf(status));
if(status==TextToSpeech.SUCCESS){
int result = this.mTextToSpeech.setLanguage(Locale.CHINA);//设置识别语音为中文
synchronized (this){
this.mIsReady=true;//设置标识符为true
for(String bufferedMessage : this.mBufferedMessages){
speakText(bufferedMessage);//读语音
}
this.mBufferedMessages.clear();//读完后清空队列
}
}
}
//释放资源
public void release(){
synchronized (this){
this.mTextToSpeech.shutdown();
this.mIsReady=false;
}
}

//更新消息队列,或者读语音
public void notifyNewMessage(String lanaugh){
String message=lanaugh;
synchronized (this){
if(this.mIsReady){
speakText(message);
}else{
this.mBufferedMessages.add(message);
}
}
}

//读语音处理
private void speakText(String message){
Log.i("liyuanjinglyj",message);
HashMap params=new HashMap();
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM,"STREAM_NOTIFICATION");//设置播放类型(音频流类型)
this.mTextToSpeech.speak(message, TextToSpeech.QUEUE_ADD, params);//将这个发音任务添加当前任务之后
this.mTextToSpeech.playSilence(100,TextToSpeech.QUEUE_ADD,params);//间隔多长时间
}
}

当然一般手机是不支持中文的可以网络下载讯飞TTS引擎后在测试。
由于TTS引擎的初始化是异步的,所以在执行实际的文字转语音之前需要把消息放到队列中。

可以给TTS引擎发送多个参数。前面展示了如何决定口语消息使用的音频流。在这种情况下,通知声音也使用相同的音频流。

最后,如果处理连续多个消息,最好在每个消息结束后暂停一会在播放下一个消息。这样做会清楚的告诉用户消息的结束和开始。

C. 在做Android与pc服务器通信,使用socket,udp协议,发送PCM语音,

This method blocks until a packet is received or a timeout has expired

D. android语音上传用什么编码

看你要实时传输的还是非实时的.开头的过程都是捕捉音频然后编码.编码也可以说是语音压缩,压缩算法有n种.gsm,g711,g723,g729,g722,silk,ilbc ====,实时传输可以使用RTP协议.有开源的rtp协议实现库.在android平台上比较快速可以实现的有PJMEDIA

E. 打电话的时候,语音数据流通过Android的软件层吗

发短信的时候,短信内容从手机1的最上层应用程序出发,经过底层、网络发送到手机2的底层,最终到达手机2的上层。
但是打电话的时候,语音内容是只在两个手机的GSM模块之间传输的,并不像短信内容那样是要经过各层的,经过各层的只是拨打、接听电话的控制信号或返回信息,而不是通话的语音数据。

F. android 局域网对讲机怎么用

本对讲机集实时语音对讲、文字、表情和文件传输与一身。使用IP广播机制,实现同一局域网段内的语音广播。使用本对讲机,只使用本地wifi即可以实现办公室内的语音会议,不用打电话,无需话费和流量。适合办公室通讯、学校寝室间沟通等。

G. android 局域网实时语音聊天音频流用什么编

一般如果应用需要进行大量数学运算时,推荐使用JNI在Java中调用C/C++编写的动态库,Java只负责逻辑和界面用户操作的相应,

你这个APP很简单分为以下几个模块

  1. 界面,与用户进行交互,需要具备Android界面的编程

  2. 网络传输,需要掌握Java网络socket编程的知识,使用TCP传输编码后的音频帧;

  3. 语音编解码模块,由两部分构成。一是c/c++编写的动态库,二是Java声明本地native函数,并将c/c++实现的native函数进行封装,方便Java调用。这部分需要掌握Java中JNI使用的知识,c/c++编程,语音处理的方面的知识,例如数字信号处理。

而c/c++写的库一般不是我们自己实现的,而是引入第三方开源代码,这里的选择有很多,我了解到的有

  1. ffmeg,很常用,就连暴风影音和QQ音乐据说用了他们的开源库,而没有遵守开源协议而进入了他们的黑名单。

  2. speex,是国外的开源库,现已被Opus取代,但是speex多了一个预处理功能,例如降噪、自动增益、回音消除等等。

  3. Superpowered,跨平台的,低延迟,功能多。

补充一点,Android现已支持纯C++的开发了,这个就需要NDK的配合,写出NativeActivity,然后就可以直接在C++中调用第三方的库了,而不用JNI这样繁琐,但是由于刚出来,教程不多,需要具备很多嵌入式、音视频采集处理的开发经验。

H. android语音聊天软件怎么实现

介绍使用较广的三款语音聊天软件:
1.YY语音最早用于魔兽玩家的团队语音指挥通话,逐渐吸引了部分传奇私服用户,最后发展为穿越火线游戏用户必备的团队语音工具,笔者曾在穿越火线游戏中目测,99%的战队收人广告后面都挂着YY语音ID。2009年初YY娱乐用户已经形成了可以和游戏用户抗衡的用户群,YY语音的娱乐公会开始逐步超越游戏公会,人气也日渐增长。时至今日,YY语音已经成为集合团队语音、好友聊天、视频功能、频道K歌、视频直播、YY群聊天、应用游戏、在线影视等功能为一体的综合型即时通讯软件。

2.腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频通话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与多种通讯终端相连。2015年,QQ继续为用户创造良好的通讯体验。其标志是一只戴着红色围巾的小企鹅。目前QQ已经覆盖Microsoft Windows、OS X、Android、iOS、Windows Phone等多种主流平台。
3.微信 (WeChat)
是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费(需
消耗少量网络流量)语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“漂流瓶”、“朋友圈”、”
公众平台“、”语音记事本“等服务插件。截止到2015年第一季度,微信已经覆盖中国 90% 以上的智能手机,月活跃用户达到 5.49 亿,用户覆盖
200 多个国家、超过 20 种语言。此外,各品牌的微信公众账号总数已经超过 800 万个,移动应用对接数量超过 85000
个,微信支付用户则达到了 4 亿左右。

I. android平台通过WIFI网络实现音频通话的方法

虽然没有做过,但是我觉的应该是生产者-消费者的问题了,你创建一个List<byte[]>的链表,录音时,依次生成固定大小的数组,放入链表。同时网络发送的线程不断检测List是否为空,不为空就取出第0个发送。另外如果录音可能很大,可以封装下链表,这样每次加入链表时,链表自己检测内存占用,当链表数量大于某个值时,写入本地文件。读的时候,链表小于某个值,再从本地文件读取加入链表,而调用接口不变。

阅读全文

与android语音传输相关的资料

热点内容
访问服务器公网地址 浏览:656
pdf打印底色去掉 浏览:443
java快递接口 浏览:395
哪个app可以教新爸爸 浏览:210
如何查看服务器系统版本信息 浏览:524
成都市土地出让金算法 浏览:702
钢筋加密标记 浏览:575
ps中扩展功能在文件夹的什么位置 浏览:903
双极压缩机为什么要先高压 浏览:527
苹果手机服务器填什么 浏览:832
android移动动画效果 浏览:691
电子和服务器是什么意思 浏览:691
phpurl中文乱码问题 浏览:893
程序员那么可爱大结局陆漓产子 浏览:538
java如何从云服务器读取本地文件 浏览:924
压缩空气软管制作方法 浏览:912
天河三号算法 浏览:924
php队列教程 浏览:632
洪水命令 浏览:530
安卓怎么弄成苹果在线 浏览:435