热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

求助:linuxg729音频压缩,杂音很大

求助:linuxg729音频压缩,杂音很大--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
坛里的各位高手,求助一个问题:

我在itu网站上下载了g729的标准算法,将pcm语音压缩后通过udp发送出去,在encode端,我dump出压缩后的语音文件,用工具解码之后,发现编码之后

的语音质量很差,都是杂音,在此求助。

我的处理过程是:
将pcm分两次编码,一次80bit
assert(readLen/4 == 80);
g729_encode_oneframe( (short *)buff, readLen/4, sendbuf+hdrlen, &g729_one_frame_size);
assert(g729_one_frame_size == G729_ONE_FRAME_SIZE);//G729_ONE_FRAME_SIZE=10
g729_encode_oneframe( ((short *)buff)+readLen/4, readLen/4, sendbuf+hdrlen+g729_one_frame_size, &g729_one_frame_size);
assert(g729_one_frame_size == G729_ONE_FRAME_SIZE);

PS:g729_encode_oneframe函数如下:
int g729_encode_oneframe(Word16 * pcm_src, Word16 src_len, unsigned char* dst, Word16 * dst_len_ptr)
{
extern Word16 *new_speech; /* Pointer to new speech data */

Word16 prm[PRM_SIZE+1]; /* Analysis parameters. */
Word16 serial[SERIAL_SIZE]; /* Output bitstream buffer */
Word16 syn[L_FRAME]; /* Buffer for synthesis speech */

Word16 i; /* frame counter */

/* For G.729B */
Word16 nb_words;

if (L_FRAME != src_len)
{
LOGD("pcm src is wrong len is not 80");
return 1;
}

LOGD("g729 encdoe one frame %d len",src_len);

for(i=0; i = (Word16)0;

/* Loop for each "L_FRAME" speech data. */

memcpy(new_speech, pcm_src, sizeof(Word16) * src_len ); /* 可能会存在网络序问题 */

if (count_frame == 32767)
{
count_frame = 256;
}
else
{
count_frame++;
}

Pre_Process(new_speech, L_FRAME);

//Coder_ld8k(prm, syn, count_frame, use_vad);
Coder_ld8k(prm, syn);

prm2bits_ld8k( prm, serial);

if(use_annex_b)
{
nb_words = add((Word16)serial[1], 2);
}
else
{
nb_words = serial[1];
}
return 0;
}


在线,求指导,qq:178021614
推荐阅读
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • slmp协议和mc协议区别_TCP协议与UDP协议的区别
    TCP协议和UDP协议TCPIP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个,之所以命名为TCPIP协议,因 ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 1、Ipv4只能用于内网,外网只能用2、DNS:把域名解析成ip地址3、MAC地址就是物理地址(网卡序列号)   IP地址:电脑序列号4、不同电脑,微信之间互相通信,靠的是端口;  ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 计算机网络计算机网络分层结构
    为了解决计算机网络复杂的问题,提出了计算机网络分层结构。计算机网络分层结构主要有OSI7层参考模型,TCPIP4层参考模型两种。为什么要分层不同产商 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • Ansem 最新雄文:软着陆后,加密市场下阶段趋势与核心叙事
    市场最糟糕的时候已经过去,以太坊合并前不太会看到新的低点;但仍需来自关注宏观市场的不确定风险。撰文:Ansem ... [详细]
  • IP、ARP、TCP、UDP、ICMP、DNS、路由协议、DHCP协议的缺陷,容易受到的攻击,以及防御措施1、IP协议1.1、介绍: ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
author-avatar
小鱼儿太疯癫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有