|
近年来,麦克风阵列技术已经广泛应用于人机语音交换系统、ENC语音通信、AI语音智能音箱、电话会议、军事应用前景的开发等。声音是信息天然的载体,是人类最自然、最高效、最便捷的信息传递方式。当无法通过直达声来表达时,最快最便捷的沟通方式就是通过手机通信来传达信息交流。那么当我们在吵杂的环境下使用手机通信时,环境噪声与语音将被麦克风收集,同时传达给对方的语音信息会被环境噪声所干扰,通信质量降低。4 Z s0 I o/ F" x. Z% M* w9 H
' L. H8 M* f2 d8 R/ p2 j0 C
语音信号的频率在300~3000Hz为重要的处理部分,要将它变成脉冲信号负载在载波上传送,首先要将这部分语音信号进行抽样、量化。抽样是模/数转换中常用的技术。模拟信号是一个连续的正弦或余弦波,要用一系列的脉冲信号对它进行基本不失真的再现,那么抽样的频率就要足够高,这样才能使信号得到还原。依据抽样的定律,抽样频率应大于两倍的抽样信号频率,才能不失真。5 T" N8 [/ T6 n- X" t# H. p- O
+ l9 c t! a! l, H7 L
8 f, Y( D1 J g% ]" V
! J/ ?! L. r6 z3 I0 z( @5 e1 a 1、什么是ENC
8 q8 x4 C# Q. @2 `' b: z
( N# M9 T) H, s' BENC(Environmental Noise Cancellation)环境降噪技术,通过以双麦或多麦线性阵列特定方式排列设计,麦克风从而能够准确获取空间信息,把记录下来的信号进行处理(采取、变换、分析、综合等)过程,呈精准计算通话者说话的方位。在保护主方向目标语音的同时,去除环境中的各种干扰噪声,能够有效抑制反向环境噪声。减少环境噪音对通话的影响,从而保证高品质通话效果, 可以更加自由的语音沟通。$ Z' x9 E! D; [6 x; U* E& Z) v+ O) F
& O0 A% ?/ O Z! E' E对于空间多样性吵杂环境下的近讲语音拾取系统来说, 采取到的语音信息需要做进一步处理。因此,麦克风阵列信号处理的主要目的就是:更好地获取声场信息的高复杂度三维球阵列,利用麦克风阵列输出信号中包含的空域-时域、频域信息,通过算法处理估计某些噪声的抑制或提取感兴趣的信息。6 \4 Y8 [/ ^4 L
& K6 H8 P( `" F; S7 g
噪声抑制算法的目的就是要从受到加性噪声影响的观测信号中估计出目标语音信号。对于这一问题,已经存在许多基于单麦克风的技术。但是,若声源距离麦克风距离较远,并且真实环境存在大量的噪声、多径反射和混响,导致拾取信号的质量下降,这会严重影响语音识别率。所有单麦克风噪声抑制算法的主要问题在于它会使语音信号失真。尽管语音质量得到改善,但可懂度却会降低。然而,采用麦克风阵列,却可以更好的处理所影响到语音信号的条件下来抑制噪声。0 V5 v1 a- W) I; G: y" i, n
& p$ E5 k+ T x) i* z( N u
1 k6 ^% d. ]9 E" z$ E' R( z4 ^7 X5 c' |" T3 e
2、麦克风阵列处理技术
. |- Z0 Q5 g1 r3 g6 Q$ d" s
" M, ]% G7 g. W- ]- w. W在蓝牙ENC耳机设计中大部分采用了MEMS麦克风,MEMS麦克风是全指向性拾音,也就是说它是在三维空间均匀的全方位收音。利用 2 个或以上的麦克风阵列构成指向性波束,通过听觉场景分析技术,对波束中采集到的声波信号进行掩蔽处理,提取其中所需的语音信息。实现近距离主声音传感器球形声场的声音信号拾取,并采用DNN/RNN 等深度学习和 Gammatone 滤波器组技术,对声波信号进行分析,抑制其中的噪声、回声信号,复原声音信号,对目标声信号实现分离、跟踪与语音增强。
7 j2 S8 i. S0 b5 U; j4 L # i4 A9 v5 w3 p
阵列模型中存在着非常多的不确定性,如语音环境的不确定性,它可能夹杂着各种类型的噪声,噪声与目标语音信号可能具有相同的频谱特性,语音的传播速度也会随着温度变化而轻微变化,这些都会导致传递函数的不精确,从而影响了麦克风阵列的设计。麦克风阵列的几何排列形状对处理算法的构建具有重要影响。在声源定位中,阵列的几何排例形状必须是已知的,由此才能正确地对声源进行定位。6 N3 V% G- z. W0 Z
) R6 {7 }+ Y# n. P6 I
麦克风阵列处理技术相对于单麦克风系统有很多优点,已成为语音增强及语音信号处理的重要部分。通过多个麦克风获取的空间信息,可以在复杂的噪声、混响等声学环境下,对语音进行增强。# f4 V" F- v" I) M$ Y# y5 g
6 C, G9 a( n* n3 l+ f' e# T2 F
" ?% x, t4 Q! Q. n
麦克风阵列语音增强示意图
8 F, E2 L" V1 {' V# z 9 i. r: k! g" z* o4 R0 j/ n
两个以上的麦克风按照特定的拓扑结构进行摆放,构成麦克风阵列,波束形成算法对于不同方向上的声音具有不同的增益。波束形成能良好地应用声音的空间信息,因此对于空间噪声有较好的抑制效果。波束形成的效果取决于麦克风阵列的拓扑结构、麦克风阵列中麦克风的数量、麦克风之间的间距、语音和噪声的空间分布等因素。在波束形成技术中,一阶延时相减是较为简单和经典的波束形成技术。当阵列中的前置麦克风与来自后置麦克风的反转和延迟信号相加时,此配置也称为差分阵列。具体做法为使用两路麦克采集语音,将一路输入信号进行延时,然后与另一路信号进行相减。如下图所示:, j2 P( e/ c) `( w i$ Q
) P" S3 E3 E1 D延时相减波束形成示意图
8 Y3 V/ h4 ]0 M& f3 j: Z 0 H6 N$ T# z, e* D
+ ?- c! ]2 z; @* A! `波束形成语音增强并不能对空间上所有方向的目标语音进行增强,也即增强是有方向性的。在不同的应用情况中,目标语音和噪声的相对空间方位也是不同的,可以根据实际需要选择不同的方向性增强目标语音或者抑制噪声。当麦克风之间的距离和时间延迟是正确选择,对于频率小于的混叠频率响应延迟叠加的波束形成是一个心形。心形模式的前端阵列没有信号衰减,对0度方向的语音全部保留,对180度方向的语音全部抑制。比较典型的麦克风阵列增益方向性图如下所示,/ ]' N: I* c# j9 _6 r
0 T4 `( {. `8 |0 G" \. q( H
麦克风阵列增益心形方向性图
" y9 B/ X2 u4 ?$ [
0 `3 [ y X( `" W: V1 N9 ]6 W: a: Y: R5 Z* K0 j; v7 c
: E; ~# S6 K8 ]0 B @& e
# Z! d) e+ }" V/ ^7 O匹配麦克风之间的距离与信号延迟是良好的波束形成阵列的关键。在保持延迟不变的情况下改变麦克风之间的物理距离的效果。使用3个样本延迟,对应的距离约为21 mm,以实现心形响应模式(fS = 48khz)。当两个麦克风之间的距离小于21毫米时,后置零点就不那么明显了,响应是一个亚心形的模式。物理距离大于21毫米时,产生的模式是一个超心形,有两个后方的空值间隔同样从180°。这可能是可取的,在应用中,所需的排斥并不完全是后方,但可能更分散,因为衰减到两侧也大于一个心型响应。
% w7 M4 H5 ^: r% o, [* y0 d+ O. G, s
麦克风阵列间距心形方向性图2 C& k- k, \+ F* K( m5 O& v
3 R: k$ w7 L7 @
5 p1 D5 A9 E: V; d! u
4 U V6 y( ^ b1 O# ` 除波束形成外,麦克风阵列处理技术还包含以下关键技术:
/ d4 {/ g8 h+ y5 x ( A2 D4 g* l6 d+ b+ r1 O
混响消除:混响去除的效果很大程度影响了语音采集的效果。我们知道,当声源停止发声后,声波在房间内要经过多次反射和吸收,似乎若干个声波混合持续一段时间,这种现象叫做混响。混响会严重影响语音信号处理,比如互相关函数或者波束主瓣,降低测向精度。
8 W, L- m: }) [# C
. _5 d2 b9 ]- f" b回声消除:录音设备本身也是播放设备时,播放的声音会直接或者被外界环境反射后重新进入到麦克风。回声消除技术就是在录音时消除设备本身播放的声音,只有效的保留外界的声音。
/ q& e& I/ F% h* R% h- {- W' J
8 d- n# Y& E1 V2 k阵列增益:这个主要是解决拾音距离的问题,若信号较小,通过阵列处理可以适当加大语音信号的能量。在语音识别中,语音信息中往往夹杂着噪音,常见的有环境噪音和人声干扰。麦克风阵列主要通过波束形成技术,来抑制噪音,增强人声。. J! U5 c: a! ^$ [* H; h- P
, {. }1 U7 a2 F2 A0 B: X# P3、声信号处理技术
- {0 o+ C, d7 q7 S$ @* m# v4 l
& a$ ^) `2 i7 ]* ]5 e% o: G9 a) y1 x信号处理的目的包括了以下三个方面:第一是去伪存真,即把信号中多余的部分(如干扰性噪声)去掉;第二是信号特征的抽取,即把信号转化成易于分析、识别的形式以更好地作后续性处理;第三是调制与解调,即将信号转化为容易传输、变换和存储等形式,或者从这些形式的信号还原出原始信号。# g6 x; G& l+ d4 l# K B3 T
; W# K9 `3 \ o H2 p6 }信号输入部分,在这一部分,连续型信号被接收后,通过一个模数转换器将其转化为离散形式的数字信号。这是一个对自变量和幅值同时进行离散化的过程,采样定理保证了数字信号在足够大的抽样频率下,信号的真实度会缺失。% w: A5 R6 m! b+ {
" Z& W( Y/ m4 |+ I. g- s+ z' m( m
信号处理部分,这一部分主要是对离散化的信号进行处理,使得处理后的信号符合某些给定的目标。这包括了频域变换、数字滤波、识别、合成等过程。它可将信号转化成所需要的形式以满足给定的性能要求。这一部分的工作就是采用滤波器来实现的,从而引申出滤波器的设计问题。
( o5 Q; \! I* h/ t" O5 ?; O ' |7 F* G0 N" p7 x
信号输出部分,这一部分主要是输出处理过的离散信号,并通过一个数模转换器还原为连续性信号。但是,这一步并不是必须的。
% S: q/ j% Y, l# O' W
/ w8 Y1 ]# M% _) I2 k' \语音信号从声源位置发出后,传递到各个麦克风。麦克风接收到语音信号后,首先将它离散成数字信号。为了对这些数字信号进行处理,在每个麦克风的后面都带有一个滤波器。这些滤波器都带有一定的功能,信号经过滤波器的处理后会实现一定的功能。需要将这些信号合成为一个信号,这是一个求和操作,然后就得到输出的信号。这个信号就会实现所需的功能,如降噪、消除回声等。2 b" `! L; s: Z8 l5 j) f
2 \) R" U. f! p& I2 g
4、滤波器技术
$ a5 Y: y! j7 E: `# V6 x
2 L v( w( t( s' U J9 U5 l人耳会通过基底膜对接收到的声音进行频率分解,声音会被分解成为各通带上的子带信号。滤波器在信号处理中的地位是非常重要的,它的功能是将采集到信号进行处理并输出有用的信息。通常由辐射源到传感器之间的声脉冲响应来表示,主要以有限脉冲响应(FIR)线性滤波建模的声信道通常是非唯一的,尤其是当FIR滤波器具有共同的零点时问题最大。在麦克风阵列的模型中,每颗麦克风的后面都有一个滤波器在处理收到的语音数据。8 l- T! N/ q% ^
* m; `8 |: L" O/ P线性约束最小方差(LCMV)滤波器在阵列中的应用非常广泛。这种最优滤波器非常强大,其原因在于它可以将所有的约束与其代价函数联系起来。滤波器的运用有很多种,包括维纳滤波器、Frost滤波器、卡尔曼滤波器等等。
, J7 @" m, t& k( `; x: ~ 0 V9 I/ |" x" I; e+ k9 m' F7 X
滤波器组(Gammatone)的带宽就是根据人耳听觉特性划分的,在话音能量较集中且人耳比较敏感的低频段划分较为细致,即带宽较须须小;而在高频段,带宽较大。其各子带带宽和中心频率的关系为:+ f0 Z( u: W8 U4 J8 f
7 ?8 b! c/ ?6 [2 _# j) o
0 |; q! P5 e* `8 R" S: F+ u; N+ }& B' x+ p/ {
为长度是L的FIR滤波器4 l2 M1 S8 x5 m1 I0 W
9 D) @) d$ r1 U- ^/ T2 X参数 A 一般是固定值,主要用于归一化处理;N 代表滤波器的阶数,控制着 Gammatone 函数包络的相对形状;b 代表函数的带宽,控制着函数时域的波动范围,b 越大,函数波动的范围就越小;fc 代表函数的中心频率;φ 代表初始相位。Gammatone 滤波器组的频响特性曲线如下图:
8 Z. {% y8 I f& n6 n+ |, ^* I7 V3 _* W
/ g3 S; P) j& ?: g' T2 u% [" a
4 X, u, g9 ?& J$ V0 lGammatone 滤波器组对语音的类耳蜗频谱分析图相比语音的FFT 语谱图分辨效果更加清晰,能更好地反映语音信号的能量分布,尤其是在有噪; n* M9 {5 l6 M3 P
声背景下,更能反映出语音信号的特性。
* F) E9 ^- E! t! b
3 W1 f$ D! r0 x1 F. x1 S; b& y5、算法的分析技术: L& x1 J5 m7 J% n5 R
1 W5 d" _; ~- d, Q6 {
对于麦克风阵列的波束形成问题,很多都能表示为半无限规划问题。/ }/ G5 k9 s x
由于问题中涉及的区域通常是二维或者三维的区域,转化成可求解的问题时需要大量的离散点。对于如此大规模的问题,很多方法在求解时都束手无策。它不仅面临着计算效率低的问题,还面临着运行存储空间不足的问题。如果把离散点减少,那么就会导致问题解的精度变得很差。所以我们需要根据应用场景来设计。: b) u; I: U# r6 a% C
% i' m8 r+ e$ ~内点法:对于大规模优化问题,比较有效的方法就是内点算法。解决线性规划问题,并且有着多项式的计算复杂度(一部分是采取的迭代次数,另一部分是每一次迭代所需的计算)。它不仅用来求解线性规划问题,同时也用来求解线性的正半定规划问题、二阶锥规划问题、凸规划问题。因此,可以考虑把问题转化为能够运用内点法问题进行处理。
$ H; y6 X: [" ]5 y 6 z0 a) e; A& G. O
线性规划问题最常用的算法是单纯形算法,它利用多面体顶点构造一个可能的解,然后沿着多面体的边走到目标函数值更好的另一个顶点,直至到达最优解为止。这个算法在实际上的效率是比较高的,但它的最坏情况非常糟糕,即计算时间可能随着问题规模的增大而指数倍长。然而,随着滤波器的长度增大,计算的时间显著增加,同时内存也会出现不足,因而没能求解出最优解。6 \: X. W3 N9 \
. f4 M# m" v. L# ?) K' G
逼近法:考虑一个近似的算法即活动约束点逼近法。由于问题是半无限规划问题,可以利用半无限规划问题的特点,寻找出近似的活动约束点,再结合问题的特点采取了一些快速算法,就是近似方法。这个方法虽然不是精确的方法,但是它求出的解与精确最优解非常接近,并且算法的效率非常高,在运行存储空间上也非常的节省。
4 G3 z, ]& q2 b4 e9 P3 ~ 8 `; d k5 p) B$ g* E6 s; g
窗函数方法:考虑了一个实时算法即窗函数方法。我们从问题的实际背景出发,需要考虑实时处理的算法,即宁可牺牲解的最优性,也要保证计算的效率。在这种情况下,可以考虑采用窗函数方法,它不仅保证了计算的效率,同时也保证了在滤波器长度足够大的情况下解的近似最优性。- c$ S0 n* ~' i4 j8 g/ T! h& G+ ?( F
e, _0 h. ~1 M) }1 N7 g
3 s. Y3 O- W, t, g0 l9 x6 Z0 a7 _从效率上看,内点法和活动约束点逼近法都非常不错。但是,如果从实时处理的角度来看,它们所需的计算时间显得太长。因此,这些方法一般适合麦克风阵列模型中的一些离线设计问题。
^% J/ a9 y! K& L ' `! u# L7 J; z; _# N f5 q/ Z/ _
然而,麦克风阵列中有很多问题是需要根据具体情况实时处理的。在这种情况下,滤波器系数解的最优性并不是最重要的,算法的计算时间才是最重要的。如果计算时间非常长,即使它是最优,也没有发挥的空间。因此,考虑采取一种快速的窗函数方法去求解问题,使得问题求解的速度非常快,并且能够达到实时处理的要求。所求的滤波器系数近似解虽然不是最优的,但是当滤波器长度足够大时,它与最优解或者性能有限是非常接近的。相比前面两种方法,窗函数方法在计算复杂度上是大大降低了。它不仅在内存的使用上节省了很多空间,计算的效率也非常高。1 [1 P9 S2 {! U0 Q" O
9 K8 {# o, }8 X: K1 R) E; n
6、计算听觉场景分析技术听觉场景分析
1 Z! W, I# `5 p) ? - r, ^( g2 d/ r3 a E; @
计算听觉场景分析技术是研究人听觉特性的学科。人耳可以在嘈杂环境中有效地选择和跟踪某一特定声源的声音。正是由于此特性,人们可以在嘈杂的鸡尾酒宴会上听到自己想要的声音,而对其他人的说话声、周围环境中的噪声、音乐声等等干扰噪声充耳不闻,这被称为 “鸡尾酒会效应”。计算听觉场景分析(ComputationalAcousticSceneAnalysis,CASA)是指通过机器来模拟人耳的听觉场景分析特性,并以此实现语音信号的增强处理。健康人的双耳不仅可以区分声强、声色、声高等,还可以较为准确的定位声源的位置、感知声源的远近。这是跟人的双耳生长的位置是有关系的。由于人的双耳在空间分布上的不同,语音分别到达双耳的能量和时间都会有所不同,双耳正是基于此类信息才可以进行声源定位等。双通道 CASA 语音增强算法首先模拟耳蜗的频率特性,将输入的语音信号通过一系列滤波器组分为若干子带,每一帧中每一子带的语音信号称为一时频(Time-Frequency, T-F)单元。然后通过计算语音的某些特征值,判断此时频单元中目标声源和噪声的能量关系。如果此时频单元中目标语音的能量占主导,则将此时频单元乘以较大掩蔽权重,保留此单元;如果此时频单元中噪声的能量占主导,则将此时频单元乘以较小的掩蔽权重,抑制此单元。加权的过程也称为掩蔽,其最终的结果是尽可能多的保留了目标语音信号,当然也不可避免的会残留一些噪声信号。但由于残留的噪声信号能量较弱,能被较强的目标语音信号掩蔽,所以人在主观上是听不到噪声,这样就达到了语音增强的目的。双通道 CASA 语音增强算法主要包括时频分解、计算特征值、生成掩蔽值和信号重建四部分,流程图如下:. c8 f. Y$ H% d: R/ U
& r. c9 j8 ?& O8 J0 h" g7 Y双通道 CASA 语音增强算法流程图
8 q" h$ J( I. L
; X3 `" |1 w5 o1 i- s7 d
2 i! J+ f6 ^3 c( ~. Z时频分解:时频分解的方法有很多:可以通过 FFT 将信号变换到频域;也可以通过一组带通滤波器组(例如 gammatone 滤波器组),将信号分为多个子带信号。计算特征值:双通道 CASA 语音增强算法用的区分特征主要是双耳间能量差(Interaural Intensity Difference,IID)和双耳间时间差(InterauralTimeDifference,ITD)。双通道间能量差(IID 是指两路麦克接收到的目标语音和噪声能量的差值关系,利用此差异来区分目标信号和噪声,其本质上是以信噪比为判决标准的。双通道时间差(ITD)是目标语音和噪声分别到达两路麦克风的时间差值。ITD 一般通过求两路语音在不同延时值下的互相关最大值求得。生成掩蔽值:每个时频单元都对应一个掩蔽值,通过掩蔽值对时频单元进行加权。根据掩蔽权值的不同可以分为离散掩蔽和连续掩蔽两种,常用的有理想二进制掩蔽。理想二进制掩蔽权值只有“0”和“1”两种,“0”代表要抑制的信号,“1”代表要保留的信号。信号重建:信号重建是将加权以后的频域数据或者子带信号重新还原为语音数据,得出增强以后的语音。
0 P H' Y. `% H; Z6 s/ l, x- \* T' _: P5 J9 A+ b% y |: _4 R
7、深度学习技术
% z6 E9 ~ b- Y6 r8 Q+ K8 I* b5 c * r+ ]& s: C5 v/ h" L5 Z
深度神经网络是深度学习的基础。深度神经网络,顾名思义,就是一个有很多层的神经网络,也可以叫做多层感知器(MLP)。而感知器的模型,也就是一个神经元的模型如下:
8 N8 x; p T, c; Z; s* G4 r( |2 f- c& f
2 f5 N, h& M9 c
1 w# I$ C, p' N& M. S感知器可以将一些输入的线性组合经过一个神经元组合函数得到神经元的输出结果。而将许多神经元分层连接起来,就得到了深度神经网络,也就是 DNN。
1 L) E( f, n/ F8 T& z% M3 T7 m. L) R1 j) c$ Q8 E0 w
+ K" z$ [2 }4 b& C' b6 r3 Y
C: U: i8 l& G3 p6 y* z! W, N) h相比传统的机器学习算法,DNN 由于具有更多的层次结果,因而对事物的建模或抽象表现能力更强,也能模拟更复杂的模型。基于深度学习的语音增强算法主要目的是实现盲源分离。即输入带噪语音的特征和频谱,输出纯净语音的频谱、或者输出纯净语音能量在带噪语音中的比例(IRM)。IRM 的定义如下:
/ v6 Y5 N) J' `; _& o* R" P# r h
3 w: d# z; A3 G' R: Y9 W3 A) N+ v" V % [/ T9 k& @( ^! M8 O% {
其中 x(m,c)和 n(m,c)分别表示在第 m 帧第 c 个频带的语音能量和噪声能量。
( |2 Y. ~) D+ r4 C6 W) V8 m & L+ P7 o6 N+ b9 Q# b
基于深度学习的语音增强的研究重点是神经网络的输入、输出以及网络的结构。在输入方面,有各种各样的特征可以选择,如 FFT、MFCC、GFCC、GF 以及这些特征的各种改进算法,能起到很好的效果和针对性。在输出方面,主要分为 IRM 和纯净频谱两类输出,也分别有着不同的适用情况和性能。在网络结构方面,既有不同层数、不同神经元数目的大小不同的网络,也有如循环神经网络(RNN)、长短时间记忆网络、深度堆叠网络等网络形式。
0 m* I& Z) P7 s+ E- G/ f $ g" ~8 H2 M7 h+ s4 E3 x* f
目前通话降噪技术分为三种:波束形成;自适应滤波;上行骨传导。6 M( H! n- E6 Q2 B+ L N7 n
3 w3 [" I% a) g8 ^
自适应滤波:自适应的过程是一个不断逼近目标的过程;自适应滤波器的重要特征是在于能够在未知的环境中工作,并能够跟踪输入信号的时变特征;也就是根据环境的改变,使用自适应滤波算法改变滤波器的参数和机构的滤波器,实现ENC通话降噪;5 H9 ] R- B5 b0 _
, j9 l1 h r+ `- n7 J
波束形成:利用两个麦克风采集到的语音进行相位差处理实现定向拾音,增强耳机佩戴者的语音并抑制环境干扰和噪声,实现在噪声环境下的清晰语音通话;6 p Q5 A e4 [. a
9 K2 y2 E+ n' Z- X0 y% l上行骨传导:则是指上行降噪,通话降噪,减少上行噪声。骨传导就是把头骨当做传声载体,通过骨声纹技术识别需要上传语音成分的信息。
/ m( w8 r- d* |% _ @6 w; _# I
$ X! o4 d7 W, E有关ENC耳机产品开发测试,目前还没有一个测试标准,但是,ENC耳机必需是在动态下多角度进行粉噪或相关的噪声信号测试。ENC耳机开发除了算法和结构上优化设计,还有麦克风阵列放置角度设计也是相当重要的。下一篇将推送《ANC滤波器目标参数设计》, t( d. X. }* `" K
0 ~4 U# {: t* x$ I" m W
+ }% y+ n. h! J(文章来源:天狼知音,发布:Anna,本文仅用于行业交流学习,并不用于商业用途。文中观点为作者独立观点。如不慎侵涉第三方权益,请与我们联络,我们将第一时间删除处理) |
|