![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
传统音频
文章平均质量分 86
david_tym
这个作者很懒,什么都没留下…
展开
-
在audio DSP中如何做软件固化
从ROM的只读特性知道放进ROM的code就不能改动了,因此放进ROM的code是经过充分验证的不会再改的代码,在音频领域主要是一些非常成熟的算法的代码,比如MP3解码算法的代码就适合放进ROM里。即以前MP3解码的code和其他的code是放在一起的,以前MP3解码的data和其他的data是放在一起的,现在要把它们拿出来放在一个独立的区域。ROM里的函数调用函数memcpy()时,函数地址还是做ROM时的,可是后面随着软件的开发,memcpy()在RAM上的地址变了。上面六步就是把软件模块固化的过程。原创 2024-07-09 08:42:07 · 427 阅读 · 0 评论 -
蓝牙HFP协议推荐的语音丢包补偿算法浮点实现的定点化
蓝牙语音通话相关的HFP(Hand Free Profile)强烈建议在宽带语音通话时要用上语音丢包补偿(packet lost concealment,PLC)算法来保证丢包时的语音质量,也给出了推荐的PLC算法的浮点实现。不仅找到了,而且还是算平方根的倒数的(Word32 Isqrt(Word32 L_x),输入是一个32位的值,输出是Q0.31的值),这样除法就变成了乘法。从图上可以看出,在做丢包补偿时,定点的和浮点的实现部分PCM值有误差,但误差都是在1范围内,这是可以接受的。原创 2024-03-21 12:29:06 · 956 阅读 · 0 评论 -
智能手表上的音频(五):录音
从图看出,音频帧也分两部分:帧头和帧内容。帧头占一个字节(8个bit),各个比特的含义已在图中表示出来,其中P表示0,FT占4个比特,从二进制的0000到0111,共8个值,对应AMR-NB的8种码率。从上图看出,录音的音频数据是从ADSP-CP的sharememory里取的(ADSP-CP的sharememory放着上下行的音频数据)。从上图看出,每隔固定时长从驱动获得48k的PCM数据,如要保存成WAV格式就重采样成16k,如要保存成AMR格式,不仅重采样成8K, 而且好要做AMR-NB编码得到码流。原创 2023-12-18 07:51:29 · 783 阅读 · 0 评论 -
智能手表上的音频(四):语音通话
从上图可以看出上行要经过audio driver / resampler / VE(AEC/ANS/AGC) / encoder / IMS等模块,下行要经过IMS / decoder / VE(ANS/AGC) / resampler / mixer / audio driver等模块。7) ADSP给AP发DISABLE_ADSP_STREAM_ACK,告诉停止ADSP上的语音流是否OK。9) CP给AP发DISABLE_CP_STREAM_ACK,告诉停止CP上的语音流是否OK。原创 2023-11-30 07:36:29 · 1530 阅读 · 2 评论 -
智能手表上的音频(三):音频文件播放
ADSP没有音频数据时又会通过DATA_REQ向AP要音频数据,AP收到后会向ADSP发送音频数据,当SBC码流的字节数达到A2DP_DATA_REQ请求的个数时又会给AP发A2DP_DATA_REQ_ACK。4) AP收到ADSP发来的DATA_REQ后就会给ADSP回DATA_REQ_ACK,带上音频数据(AP把音频数据放在双方都能访问的share memory里,实际上在命令里带上的是这块音频数据在share memory里的起始地址, ADSP收到命令后从这个起始地址处拿音频数据)。原创 2023-11-08 08:30:00 · 456 阅读 · 0 评论 -
智能手表上的音频(一):架构
SRC是各种采样率(8k / 16k / 44.1 k /48k等)的转换,以前写过专门的文章,具体见以下文章(不同的是少了一些外设(在手表这种产品形态下就不需要有线耳机和听筒等了),同时把外置codec芯片换成了内置codec,即把codec芯片集成到SOC里面了。有专门的codec芯片厂商,他们把codec芯片的功能做的比较丰富。)介绍了安卓智能手机上的音频。相对智能手机而言,相同的是依旧有AP/ADSP/CP,不同的是不再用安卓系统,同时音频外设只有内置codec上的麦克风和扬声器,以及蓝牙。原创 2023-09-25 08:30:00 · 404 阅读 · 0 评论 -
音频音量调整中的ramp up & down
音频音量调整中的ramp up & down原创 2023-01-16 08:09:51 · 1565 阅读 · 1 评论 -
麦克风阵列波束形成之DSB原理与实现
语音识别有近场和远场之分,且很多场景下都会用到麦克风阵列(micphone array)。所谓麦克风阵列是一组位于空间不同位置的麦克风按一定的形状规则布置形成的阵列,是对空间传播声音信号进行空间采样的一种装置,采集到的信号包含了其空间位置信息。近场语音识别将声波看成球面波,它考虑各麦克风接收信号间的幅度差;远场语音识别将声波看成平面波,它忽略各麦克风接收信号间的幅度差,近似认为各接收信号之间是简单的时延关系。麦克风阵列可分为一维、二维和三维麦克风阵列。一维麦克风阵列,即线性麦克风阵列,各个麦克风位于同一条直原创 2022-02-21 08:17:06 · 3624 阅读 · 3 评论 -
VoIP语音处理流程和知识点梳理
做音频软件开发10+年,包括语音通信、语音识别、音乐播放等,大部分时间在做语音通信。做语音通信中又大部分时间在做VoIP语音处理。语音通信是全双工的,既要把自己的语音发送出去让对方听到,又要接收对方的语音让自己听到。发送又可叫做上行或者TX,接收又可叫做下行或者RX。之前写了好多关于VoIP语音处理方面的文章,本文想结合框图对相关知识做一个梳理。先综述发送和接收方向的处理,再具体到每个知识点上。讲到某个知识点,如曾经写过相关的文章,就给出链接,如没有写过,等以后写到时再补上链接。由于一些知识点在发送和接收两原创 2022-01-07 08:11:02 · 3928 阅读 · 1 评论 -
基于MCRA-OMLSA的语音降噪(三):实现(续)
上篇文章(基于MCRA-OMLSA的语音降噪(二):实现)讲了基于MCRA-OMLSA的语音降噪的软件实现。本篇继续讲,主要讲C语言下怎么对数学库里的求平方根(sqrt())、求自然指数(exp())、求自然对数(log())的函数做替换。1,求平方根求平方根最常用的方法是牛顿迭代法。下图是y = f(x)的曲线,当f(x) =0时的值(α)就是该方程的根。可以通过多次迭代逼近的方法求得这个根,原理如下:任取一个x0,这个值对应的y值为f(x0)。在.原创 2022-01-05 08:09:48 · 722 阅读 · 0 评论 -
基于MCRA-OMLSA的语音降噪(二):实现
上篇文章(基于MCRA-OMLSA的语音降噪(一):原理)讲了基于MCRA-OMLSA降噪的原理,本篇讲怎么做软件实现。软件实现有多种方式。单纯看降噪效果可用python,因为python有丰富的库可用,可节省不少时间,把主要精力放在降噪效果提升上。如果要把算法用在产品上就得用其他语言。我们是芯片公司,且我们team偏底层,最常用的语言是C,所以我又用C实现了该算法。本文先讲讲在python下的实现,再讲讲在C下的实现。一,python下的实现Python有丰富的库,音频文件读取的librosa原创 2021-12-28 08:11:32 · 1021 阅读 · 0 评论 -
基于MCRA-OMLSA的语音降噪(一):原理
前面的几篇文章讲了webRTC中的语音降噪。最近又用到了基于MCRA-OMLSA的语音降噪,就学习了原理并且软件实现了它。MCRA主要用于噪声估计,OMLSA是基于估计出来的噪声去做降噪。类比于webRTC中的降噪方法,也有噪声估计(分位数噪声估计法)和基于估计出来的噪声降噪(维纳滤波),MCRA就相当于分位数噪声估计法,OMLSA就相当于维纳滤波。本文先讲讲怎么用MCRA和OMLSA来做语音降噪的原理,后续会讲怎么来做软件实现。一 MCRAMCRA的全称是Minima Controlled R原创 2021-12-21 08:11:27 · 2229 阅读 · 1 评论 -
webRTC中语音降噪模块ANS细节详解(四)
上篇(webRTC中语音降噪模块ANS细节详解(三))讲了噪声的初始估计方法以及怎么算先验SNR和后验SNR。 本篇开始讲基于带噪语音和特征的语音和噪声的概率计算方法和噪声估计更新以及基于维纳滤波的降噪。一, 带噪语音和特征条件下的语音概率先看怎么算带噪语音和特征条件下的语音概率。其中会用到先前算好的先验SNR和后验SNR,也会用到特征条件下的语音概率,从而涉及到怎么算特征条件下的语音概率,有了特征条件下的语音概率后带噪语音和特征条件下的语音概率就好算了。1, 带噪语音和特征条件下的语音概.原创 2021-11-15 08:00:41 · 1422 阅读 · 1 评论 -
webRTC中语音降噪模块ANS细节详解(三)
上篇(webRTC中语音降噪模块ANS细节详解(二))讲了ANS的处理流程和语音在时域和频域的相互转换。本篇开始讲语音降噪的核心部分,首先讲噪声的初始估计以及基于估计出来的噪声算先验信噪比和后验信噪比。1,初始噪声估计webRTC中ANS的初始噪声估计用的是分位数噪声估计法(QBNE,Quantile Based Noise Estimation),对应的论文为《Quantile Based Noise Estimation For Spectral Subtraction And Wiene.原创 2021-11-02 08:07:56 · 2322 阅读 · 0 评论 -
webRTC中语音降噪模块ANS细节详解(二)
上篇(webRTC中语音降噪模块ANS细节详解(一))讲了维纳滤波的基本原理。本篇先给出webRTC中ANS的基本处理过程,然后讲其中两步(即时域转频域和频域转时域)中的一些处理细节。ANS的基本处理过程如下图1: 图1从图1可以看出,处理过程主要分6步,具体如下:1) 把输入的带噪信...原创 2021-10-22 08:06:22 · 2946 阅读 · 0 评论 -
webRTC中语音降噪模块ANS细节详解(一)
ANS(adaptive noise suppression) 是webRTC中音频相关的核心模块之一,为众多公司所使用。从2015年开始,我在几个产品中使用了webRTC的3A(AEC/ANS/AGC)模块。以前仅仅是使用,对其中的算法原理只是初步了解。近半年来,我利用业余时间在看着《语音增强:理论与实践》和《实时语音处理时间指南》这两本书,对降噪算法有了更深的理解,同时又对ANS的代码进行了调试,基本掌握了算法实现。我想把我对ANS的理解写出来。由于内容细节较多,就出一个系列吧。webRTC中的ANS是原创 2021-10-10 16:39:24 · 2053 阅读 · 0 评论 -
基于混合模型的语音降噪实践
前面的文章(语音降噪论文“A Hybrid Approach for Speech Enhancement Using MoG Model and Neural Network Phoneme Classifier”的研读 )梳理了论文的思想。本篇就开始对其实践,主要分以下几步:1,基于一个语料库算出每个音素的单高斯模型;2,训练一个输出是一帧是每个音素概率的NN分类判别模型;3,算法实现及调优。1,得到每个音素的单高斯模型要想得到每个音素的单高斯模型,首先得做好音素对齐,知道某一帧对应哪个音.原创 2021-06-18 07:58:32 · 410 阅读 · 1 评论 -
语音降噪论文“A Hybrid Approach for Speech Enhancement ...“的研读
最近认真的研读了一篇关于语音降噪的论文(A Hybrid Approach for Speech Enhancement Using MoG Model and Neural Network Phoneme Classifier)。它是一种利用混合模型降噪的方法,即既利用了生成模型(MoG高斯模型),也利用了判别模型(神经网络NN模型)。本文根据自己的理解对原理做了梳理。论文是基于“Speech Enhancement Using a Mixture-Maximum Model”提出的MixMAX.原创 2021-05-16 22:46:29 · 1055 阅读 · 0 评论 -
基于sinc的音频重采样(二):实现
上篇(基于sinc的音频重采样(一):原理)讲了基于sinc方法的重采样原理,并给出了数学表达式,如下: (1)本文讲如何基于这个数学表达式来做软件实现。软件实现的细节很多,这里主要讲核心部分。函数srcUD()和filterUD()就是实现的主要函数(这两个函数是在源码基础上作了一定的改动,核心思想没变)。srcUD()是实现一帧中点的重采样...原创 2021-04-17 22:08:14 · 1179 阅读 · 2 评论 -
基于sinc的音频重采样(一):原理
我在前面的文章《音频开源代码中重采样算法的评估与选择 》中说过sinc方法是较好的音频重采样方法,缺点是运算量大。https://ccrma.stanford.edu/~jos/resample/ 给出了sinc方法的原理文档和软件实现。以前是使用这个算法,没太关注原理和实现细节。去年(2020年)由于项目的需要和组内同学把这个算法的原理和软件实现细节搞清楚了。本文先讲讲sinc方法的原理,后面文章会讲讲软件实现的细节。1,sinc函数和信号的采样与重建在数字信号处理中,sinc函数定义为:.原创 2021-03-13 23:31:30 · 3662 阅读 · 1 评论 -
音频处理中交织与非交织数据转换的几种方法
当音频的声道数多于一个时,音频数据的存放有两种格式,即交织的(interleave)和非交织的(non-interleave)。以最常见的双声道为例,交织和非交织的音频数据存放如下图:上图中L表示左声道数据,R表示右声道数据,整数1、2等表示第几个采样点,这样L1就表示左声道的第一个采样点数据。从上图看出,所谓交织的是指一个采样点的两个声道的数据依次放在一起,非交织的是指先放左声道的所有采样点的数据,再放右声道的所有采样点的数据。在音频处理时,有时需要交织的数据,而有时又需要非交织的数据..原创 2020-05-29 23:15:19 · 2168 阅读 · 0 评论 -
音频开发基础知识简介
在现实生活中,音频(audio)主要用在两大场景中:语音(voice)和音乐(music)。语音主要用于沟通通信,如打电话,现在由于语音识别的发展,人机语音交互也是语音的一个应用,目前正在风口上,好多大厂都推出了智能音箱。音乐主要用于欣赏,如音乐播放。下面简单介绍音频的基础知识:采样和采样频率:现在是数字时代,在音频处理时要先把音频的模拟信号变成数字信号,这叫A/D转换。要把音频的模拟...原创 2018-06-05 22:14:47 · 1602 阅读 · 0 评论 -
语音通信中提高音质的方法
语音通信是实时通信,影响语音质量的因素很多,大致可把这些因素分成两大类:一类是回声噪声等周围环境因素导致语音质量差,另一类是丢包延时等网络环境因素导致语音质量差。这两类因素由于成因不一样,解决方法也不一样。下面就讲讲用哪些方法来提高语音质量。首先看由于周围环境因素导致语音质量差的解决方法。这类方法主要是用信号处理算法来提高音质,不同的因素有不同的处理算法,用回声消除算法把回声消除掉,用噪...原创 2018-06-14 21:23:37 · 2537 阅读 · 0 评论 -
webRTC中音频相关的netEQ(一):概述
上篇文章(语音通信中终端上的时延(latency)及减小方法)说从本篇开始会切入webRTC中的netEQ主题,netEQ是webRTC中音频技术方面的两大核心技术之一(另一核心技术是音频的前后处理,包括AEC、ANS、AGC等,俗称3A算法)。webRTC是Google收购GIPS重新包装后开源出来的,目前已是有巨大影响力的实时音视频通信解决方案。国内的互联网公司,要做实时音视频通信产品,绝大多...原创 2018-07-18 21:26:42 · 2997 阅读 · 1 评论 -
音频软件开发中的debug方法和工具
音频软件开发同其他软件开发一样,都需要去调试。音频软件调试同其他软件调试方法有相同的地方,也有不同的地方,同时调试时还需要借助一些专门的工具,有了这些方法和工具,就能快速的定位问题和解决问题。下面我们就谈谈这些方法和工具。1,方法1)log这是软件调试中最常用的方法,音频调试也不例外。在写代码时加上一定的log, 在出问题时就打开这些log,通过log分析问题出在什么地方。一个好的lo...原创 2018-06-05 22:16:21 · 1219 阅读 · 1 评论 -
嵌入式音频软件的架构
嵌入式产品中语音通信和音乐播放的软件架构是有差别的,这里还是把这两种case分开来讲。1, 语音通信语音通信的软件架构通常如下:语音发送时由codec芯片采集到语音的模拟信号转换成PCM数据然后通过I2S总线发送给CPU(这是音频驱动负责的,不同的OS会有不同的驱动架构,会在后面音频采集和播放中详细讲,重点讲linux的)。CPU收到PCM数据后首先做前处理,主要包括回音消除(AEC...原创 2018-06-05 22:17:37 · 2504 阅读 · 0 评论 -
音频的采集和播放
音频的采集和播放主要由专门的codec芯片完成,主流的codec芯片厂商有Circus Logic、Wolfson等。采集时codec芯片通过A/D采样把声音的模拟信号转换成数字信号并通过I2S总线送给CPU处理,播放时CPU把处理好的数字信号通过I2S总线送给codec芯片并通过D/A转换为模拟信号播放出来。codec芯片除了A/D, D/A功能外还有其他功能,主要有1)对音频通路进行控制,比如...原创 2018-06-05 22:19:21 · 4694 阅读 · 0 评论 -
谈谈我开发过的几套语音通信解决方案
本人从事音频软件开发10+年,既开发过voice相关的,又开发过music相关的,但大多数还是开发voice相关的。掐指一算到现在在通信终端上开发过的语音解决方案共有五套,它们既有有线通信的,又有无线通信的;既有在上层开发的,又有在底层开发的;既有在ARM上开发的,又有在DSP上开发的,总之各有特色。但因为都是语音通信解决方案,又有共同的地方,都要有语音的采集播放、编解码、前后处理和传输等。今天我...原创 2018-07-08 22:45:45 · 7661 阅读 · 1 评论 -
移动通信最先进的音频编解码器EVS及用好要做的工作
语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势。如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音是互联网厂商提供的服务,一般免费,如微信语音。目前语音通信技术上就分成了两大阵营:传统通信阵营和互联网阵营,互相竞争,推动着语音通信技术的发展。具体到编解码器上互联网阵营提出了涵盖语音和音乐的音频编解...原创 2018-07-10 19:41:13 · 7134 阅读 · 4 评论 -
Android手机上Audio DSP频率低 memory小的应对措施
我在前面的文章(Android智能手机上的音频浅析)中说过Android手机上有一块专门用于音频处理的DSP,它的特点是频率低(一般几百MHZ)、内部memory小(通常不超过100k word)。要想让Audio DSP上放下更多的内容以及能流畅的运行,要有一些应对措施。今天就聊聊这些措施。1,频率低的应对措施由于DSP的频率低,要想软件能流畅的运行,就得把运行时的load降下来。...原创 2018-07-12 19:12:58 · 2030 阅读 · 0 评论 -
语音通信中终端上的时延(latency)及减小方法
时延是语音通信中的一个重要指标,当端到端(end2end)的时延(即one-way-delay,单向时延)低于150Ms时人感觉不到,当端到端的时延超过150Ms且小于450Ms时人能感受到但能忍受不影响通话交流,当端到端的时延大于1000Ms时严重影响通话交流,用户体验很差。同时时延也是语音方案过认证的必选项,超过了规定值这个方案是过不了认证的。今天我们就讲讲时延是怎么产生的以及怎么样在通信终端...原创 2018-07-15 16:45:37 · 8421 阅读 · 1 评论 -
webRTC中音频相关的netEQ(二):数据结构
上篇(webRTC中音频相关的netEQ(一):概述)是netEQ的概述,知道了它主要是用于解决网络延时抖动丢包等问题提高语音质量的,也知道了它有两大单元MCU和DSP组成。MCU 主要是把从网络收到的语音RTP包放进packet buffer内,同时也会根据计算出来的网络延时和抖动缓冲延时以及DSP单元反馈过来的信息决定给DSP发什么控制命令(命令主要有正常播放、加速、减速、丢包补偿、融合等),...原创 2018-08-01 21:51:27 · 1356 阅读 · 1 评论 -
webRTC中音频相关的netEQ(三):存取包和延时计算
上篇(webRTC中音频相关的netEQ(二):数据结构)讲了netEQ里主要的数据结构,为理解netEQ的机制打好了基础。本篇主要讲MCU中从网络上收到的RTP包是怎么放进packet buffer和从packet buffer里取出来,以及网络延时值(optBufLevel)和抖动缓冲延时值(buffLevelFilt)的计算。先看RTP语音包是怎么放进packet buffer的。...原创 2018-08-20 19:06:37 · 1805 阅读 · 3 评论 -
webRTC中音频相关的netEQ(四):控制命令决策
上篇(webRTC中音频相关的netEQ(三):存取包和延时计算)讲了语音包的存取以及网络延时和抖动缓冲延时的计算,MCU也收到了DSP模块发来的反馈报告。本文讲MCU模块如何根据网络延时、抖动缓冲延时和反馈报告等决定发给DSP模块的控制命令, 好让DSP模块先对取出的语音包做解码处理(如果有的话)以及根据这些命令做信号处理。MCU模块给DSP模块发的控制命令主要有正常播放(normal...原创 2018-10-22 21:53:16 · 1708 阅读 · 2 评论 -
webRTC中音频相关的netEQ(五):DSP处理
上篇(webRTC中音频相关的netEQ(四):控制命令决策)讲了MCU模块是怎么根据网络延时、抖动缓冲延时和反馈报告等来决定给DSP模块发什么控制命令的。DSP模块根据收到的命令进行相关处理,处理简要流程图如下。从上图看出如果有语音包从packet buffer里取出来先要做解码得到PCM数据,没有就不用做解码了。编解码也是数字信号处理算法的一种,是个相当大的topic,不是本文所关注...原创 2018-11-19 22:06:45 · 1661 阅读 · 0 评论 -
在通信设备商工作那几年技术上的得与失
本人硕士毕业后的头几年是主要在通信设备商(他们研发生产通信设备(如基站)卖给电信运营商(如中国移动))工作,那时是通信业的黄金十年,单是通信设备商就有很多家,国内有华为、中兴、大唐、烽火等,国外有爱立信、诺基亚、西门子、摩托罗拉、朗讯、北电、阿尔卡特等。这里面的有些公司现在刚毕业的可能都没听说过,因为它们要么被兼并要么倒闭了,这要“归功”于华为(是华为打的他们无还手之力导致要么兼并要么倒闭的)。现...原创 2018-12-09 20:05:18 · 1321 阅读 · 2 评论 -
Android智能手机中各种音频场景下的audio data path
上一篇文章(Android智能手机上的音频浅析)说本篇将详细讲解Android智能手机中各种音频场景下的音频数据流向,现在我们就开始。智能手机中音频的主要场景有音频播放、音频录制、语音通信等。不同场景下的音频数据流向有很大差异,即使是同一场景,在不同的模式下音频数据流向也有所不同。1,音频播放Android系统audio框架中主要有三种播放模式:low latency playbac...原创 2018-07-05 19:18:09 · 2553 阅读 · 5 评论 -
Android智能手机上的音频浅析
手机可以说是现在人日常生活中最离不开的电子设备了。它自诞生以来,从模拟的发展到数字的,从1G发展到目前的4G以及不久将来的5G,从最初的只有唯一的功能(打电话)发展到目前的全功能,从功能机(feature phone)发展到智能机(smart phone),可谓变化巨大。对于手机上的音频来说,刚开始只有语音通信功能,现在不仅语音通信,还可以听音乐、录音、智能语音(语音输入/语音交互)等。智能手机中...原创 2018-07-03 19:41:07 · 6630 阅读 · 1 评论 -
聊聊音频类开源代码这点事
我工作的头几年是在通信设备商做通信设备上的语音软件开发,主要是follow ITU-T/3GPP/RFC等SPEC写代码,相对封闭,没怎么接触开源代码。后来到芯片公司做终端上的voice engine,开始接触音频类的开源代码,先是ITU-T/3GPP的各种codec,后来是各种完整的解决方案。刚开始做voice engine的时候,GIPS还没被Google收购,更加没有webRTC的开源,那时...原创 2018-07-01 11:28:52 · 1898 阅读 · 0 评论 -
音频处理之回声消除及调试经验
本文讲的回声(Echo)是指语音通信时产生的回声,即打电话时自己讲的话又从对方传回来被自己听到。回声在固话和手机上都有,小时还可以忍受,大时严重影响沟通交流,它是影响语音质量的重要因素之一。可能有的朋友要问了,为什么我打电话时没有听见自己的回声,那是因为市面上的成熟产品回声都被消除掉了。回声分为线路回声(line echo)和声学回声(acoustic echo),线路回声主要存在于固话中,是由于...原创 2018-06-06 22:48:43 · 14459 阅读 · 10 评论