Sample-based engine noise synthesis using a harmonic synchronous overlap-and-add method
原文连接 Sample-based engine noise synthesis using a harmonic synchronous overlap-and-add method
作者:Jan Jagla, Julien Maillard, Nadine Martin
摘要
为了合成在任意速度下的内燃机引擎的噪音,一种基于重叠相加的方法被提出了来,被用于声音样本的提取从一个预先录制的连续变换速度的引擎声音。此新的方法的目的是最小化可能被连接样本声音的有限数量谐波之间的相位的。这些被合成的谐波然后被保留了,这大大提高了被恢复的声音的质量,并且,与现有方法相比,这种合成的阶段非常适用于实时处理由于低计算量。这种提出的分析合成方法可被用于任何频率内容仅与它的基频有关的谐波声音。通过与现有重叠和叠加的方法,这里介绍的方法被称为谐波同步重叠相加。
1. 介绍
实时引擎声浪合成子啊道路交通可听化有着大量的应用,而且在其他领域例如驾驶仿真[1]或者内部和外部车辆声音质量的评估[2,3]。当前的方法不使用于实时处理应用。因此,一种新的发动机声音方法以及其他类型的非平稳谐波, 这些信号的频谱内容仅取决于瞬时基频值被提出了在下面。与现有的方法相比较非常低计算量。此方法基于重叠相加(OLA)算法原理例如Roucos[4介绍并由Jones[5]讨论的同步OLA(SOLA), 音高同步OLA(PSOLA)[6]和波形相似OLA(WSOLA)[7]。这些方法最初是为语音的音高和时间尺度修改而开发的。这里介绍的方法旨在创建一个样本数据集,这些样本的基本频率根据发动机的速度变化而变化。
数据集的构造使得基频的任何连续演变都可以通过重叠和添加正确选择的声音样本来呈现。该方法对现有OLA算法的主要改进是合成信号谐波的相位连续性。事实上,音高同步或 PSOLA 中使用的波形相似性同步和WSOLA 算法在应用于发动机噪声时不足以保持合成信号的谐波。因此这里介绍的方法称为谐波同步重叠相加方法 (HSOLA)。
2. 引擎声浪模型考虑
一个引擎声浪的信号本质是谐波由于发生在引擎缸内的顺序的爆炸。此文中仅考虑四冲程内燃机,因为它被用于大多数量产汽车、卡车和摩托车。因此,点火频率为
F
e
x
=
N
c
∗
r
p
m
/
120
F_{ex}=N_c*rpm/120
Fex=Nc∗rpm/120,其中
N
c
N_c
Nc为引擎缸数,rmp为每分钟的转数。随后的两次爆炸不会发生在同一个气缸中,因此它们并不相同。同样,随后的两次发动机旋转不包含相同气缸的爆炸。因此,另外两个频率及其谐波丰富了发动机声音的频谱,
F
e
n
=
r
m
p
/
60
F_{en}=rmp/60
Fen=rmp/60和
F
c
=
r
m
p
/
120
F_c=rmp/120
Fc=rmp/120,其中
F
e
n
F_{en}
Fen对应于发动机转数的频率,
F
c
F_c
Fc 是对应于发动机一个完整周期(两转)的基频。在本文中,内燃机发出的噪声应该完全以其基频为特征,因此不考虑施加于发动机的负载。 因此,恒速下的发动机噪声可以建模为
x
F
0
[
n
]
=
∑
k
A
F
0
,
k
s
i
n
(
2
π
k
F
0
F
s
n
+
ϕ
F
0
,
k
)
+
N
F
0
[
n
]
,
(
1
)
xF_0[n]=\sum_{k}A_{F_0,k}sin(2\pi \frac {kF_0} {F_s} n+ \phi_{F_{0,k}} ) +N_{F_0}[n], (1)
xF0[n]=k∑AF0,ksin(2πFskF0n+ϕF0,k)+NF0[n],(1)
其中n为离散时间索引,
F
0
=
F
c
=
r
p
m
/
120
F_0=F_c =rpm/120
F0=Fc=rpm/120 为基频频率,
A
F
0
,
k
A_{F_0,k}
AF0,k与
ϕ
F
0
,
k
\phi_{F_{0,k}}
ϕF0,k分别为谐波的幅度和初始相位,并且
N
F
0
[
n
]
N_{F_0}[n]
NF0[n]为引擎噪声的随即分量。随机噪声的幅度、相位和光谱颜色仅取决于基频 F0。在下文中,最高能量分量的阶数记为
k
A
m
a
x
k_{Amax}
kAmax。 实际上,对于 Nc 缸发动机,
k
A
m
a
x
=
N
c
k_{Amax} = Nc
kAmax=Nc。
3. HSOLA 方法概述
3.1 HSOLA 方法的输入
HSOLA 方法的输入信号可以通过在发动机舱附近放置一个麦克风并在可用转速范围内不啮合齿轮的情况下运行发动机来获得。相应的基频范围记为 [ F 0 m i n ; F 0 m a x ] [F^{min}_0 ; F^{max}_0] [F0min;F0max]。发动机转速的变化(以及基频 F0 的变化)必须足够慢以在至少一个周期内假设其局部平稳性。因此,发动机转速连续变化的输入信号可以通过方程 1 进行局部建模。
3.2 分析和样本数据集创建
分析阶段旨在从输入信号中以等间距的基频迭代收集声音样本,基频为
F
0
i
=
F
0
m
i
n
+
i
(
F
0
m
a
x
−
F
0
m
i
n
)
/
(
M
−
1
)
,
i
=
0..
M
−
1
F^{i}_0 = F^{min}_0 +i(F^{max}_0-F^{min}_0)/(M-1), i=0..M-1
F0i=F0min+i(F0max−F0min)/(M−1),i=0..M−1, 其中
M
M
M 为要提取的声音样本总数,一般设置约为1000对于大多数量产汽车、卡车和摩托车的通用发动机,i 是迭代指数。
首先是输入基频信号的演变必须被估计。多种稳健的基本方法文献中存在频率跟踪。 在此应用程序中,使用了 Zahorian [8] 引入的 YAAPT 方法的简化版本。 然后,对于每一个声音样本的基频
f
0
i
f^{i}_0
f0i必须被提取,搜索间隔
I
i
I_i
Ii 定义为输入信号的时间段,其频率
k
A
m
a
x
F
0
i
k_{Amax}F^{i}_0
kAmaxF0i 的取值范围为
k
A
m
a
x
F
0
i
−
Δ
F
k_{Amax}F^{i}_0-\Delta F
kAmaxF0i−ΔF到
k
A
m
a
x
F
0
i
+
Δ
F
k_{Amax}F^{i}_0+\Delta F
kAmaxF0i+ΔF(其中
Δ
F
\Delta F
ΔF可以被设置为
(
F
0
m
a
x
−
F
0
m
i
n
/
M
)
(F^{max}_0 - F^{min}_0/M)
(F0max−F0min/M) 因此间隔
[
I
i
]
i
=
0..
M
−
1
[I_i]_{i=0..M-1}
[Ii]i=0..M−1是不相交的).然后用适当的时间窗口从每个间隔 Ii 中提取声音样本。假设基频在每个提取的声音样本的长度上是恒定的,因此可以通过等式 1 对其进行建模。HSOLA 分析的主要目的是确定最佳提取时刻,类似于 PSOLA 术语,称为音高标记。第 4 节将描述这种方法
3.3 合成
一旦创建了声音样本的数据集,就可以通过对正确选择的声音样本应用重叠和相加算法来合成基频的任意演变。样本选择和重叠相加构成了 HSOLA 方法的合成阶段,其中为谐波保留了相位连续性,如第 5 节所述。
4. 分析和数据集创建
为了定位每个区间 Ii 中的最佳提取时刻(在第 3.2 节中定义),一组潜在的音高标记被定义为离散时间索引
[
n
i
,
l
]
l
=
1..
l
i
,
m
a
x
[n_i,l]_{l=1..l_{i,max}}
[ni,l]l=1..li,max(其中其中
l
l
l 是间隔
I
i
I_i
Ii 中潜在音高标记的索引) 其中谐波分量
k
A
m
a
x
F
0
i
k_{Amax}F^{i}_0
kAmaxF0i 的初始相位对于从瞬间
n
i
,
l
n_{i,l}
ni,l 开始的输入信号部分为零(由
x
F
0
i
[
n
−
n
i
,
l
]
x_{F^{i}_0}[n - n{i,l}]
xF0i[n−ni,l] 根据方程1建模).这些潜在的音高标记是通过计算频率为
k
A
m
a
x
F
0
i
k_{Amax}F^{i}_0
kAmaxF0i 的正弦曲线与由间隔
I
i
I_i
Ii 定义的输入信号部分之间的互相关函数获得的。正弦曲线从零相位开始,其长度设置为要提取的样本的长度。因此,潜在的音高标记对应于计算的互相关的局部最大值。
作为被称为单谐波相位匹配的第一种方法,获得频率
F
0
i
F^{i}_0
F0i的最佳音调标记作为互相关函数的全局最大值。
作为被称为多谐波相位匹配的第二种方法,将高次谐波的相位考虑在内以进一步提高合成信号的谐波。下面,该部分的频率分量
k
F
0
i
kF^{i}_0
kF0i的初始相位从瞬间
n
i
,
l
n_{i,l}
ni,l 开始的输入信号被记作
ϕ
F
0
i
,
k
,
l
\phi_{F^{i}_0,k,l}
ϕF0i,k,l 。一组有数量谐波
k
F
0
i
(
k
>
k
A
m
a
x
)
kF^{i}_0 (k>k{Amax})
kF0i(k>kAmax)的相位
ϕ
F
0
i
,
k
,
l
\phi_{F^{i}_0,k,l}
ϕF0i,k,l 被估计给所有潜在音高的标记
[
n
i
,
]
[n_{i,}]
[ni,],并且与在算法的先前迭代中提取的具有接近基频的声音样本的相位进行比较。相位被估计了从信号段
I
i
I_i
Ii 和频率为
k
F
0
i
kF^{i}_0
kF0i的正弦波之间的互相关性。参见图 1a。 对于四缸发动机噪音情况。 相位
ϕ
F
0
i
,
k
,
l
\phi _{F^{i}_0,k,l}
ϕF0i,k,l为
ϕ
F
0
i
,
k
,
l
=
2
π
Δ
N
l
,
k
k
F
0
i
F
s
,
(
2
)
\phi_{F^{i}_0,k,l} = 2\pi \Delta N_{l,k} \frac{kF^{i}_0} {F_s}, (2)
ϕF0i,k,l=2πΔNl,kFskF0i,(2)
其中
k
k
k是所考虑的谐波的阶数,
Δ
N
l
,
k
\Delta N_{l,k}
ΔNl,k是潜在音高标记
n
i
,
l
n_{i,l}
ni,l 与为第
k
k
k次谐波计算的互相关函数的最近局部最大值之间的样本差(参见图 1b),
F
s
Fs
Fs是 采样频率。
为了选择最佳音高标记
n
i
,
l
i
,
o
p
t
n_{i,l_{i,opt}}
ni,li,opt 在潜在集合中音高标记
[
n
i
,
l
]
[n_{i,l}]
[ni,l],每个谐波在有限数量
N
s
N_s
Ns先前提取的样本上的平均相位计算为
ϕ
F
0
i
,
k
‾
=
∑
j
=
1
N
s
ϕ
F
0
i
−
j
,
k
,
l
i
,
o
p
t
N
s
,
(
3
)
\overline{ {\phi_{F^{i}_0,k}}} = \frac{\sum^{N_s}_{j=1} \phi_{F^{i-j}_0,k,l_{i,opt}}} {N_s}, (3)
ϕF0i,k=Ns∑j=1NsϕF0i−j,k,li,opt,(3)
其中
ϕ
F
0
i
−
j
,
k
,
l
i
,
o
p
t
\phi_{F^{i-j}_0,k,l_{i,opt}}
ϕF0i−j,k,li,opt是在先前的迭代中,频率
F
0
i
−
j
F^{i-j}_0
F0i−j提取的声音样本的第
k
k
k次谐波的相位。然后,对于每个潜在的音高标记,相位匹配标准
C
(
l
)
C(l)
C(l) 被定义为由交叉的幅度加权的相位差
(
ϕ
F
0
i
,
k
‾
−
ϕ
F
0
i
,
k
,
l
)
(\overline{\phi_{F^{i}_0,k}} - \phi_{F^{i}_0,k,l})
(ϕF0i,k−ϕF0i,k,l)的和,其中权重为A加权分贝所表示的相关性的局部最大值。形如
C
(
l
)
=
∑
k
∣
ϕ
F
0
i
,
k
‾
−
ϕ
F
0
i
,
k
,
l
∣
A
i
,
l
,
k
,
(
4
)
C(l) = \sum_{k}|\overline{\phi_{F^{i}_0,k}} - \phi_{F^{i}_0,k,l}|A_{i,l,k}, (4)
C(l)=k∑∣ϕF0i,k−ϕF0i,k,l∣Ai,l,k,(4)
其中
A
i
,
l
,
k
A_{i,l,k}
Ai,l,k是用于计算
ϕ
F
0
i
,
k
,
l
\phi_{F^{i}_0,k,l}
ϕF0i,k,l的互相关函数的局部最大值的 db(A) 幅度。
图.1. a)为片段
I
i
I_i
Ii 之间的互相关函数四缸发动机噪声信号和频率正弦曲线
4
F
0
=
k
A
m
a
x
F
0
4F_0 = k_{Amax}F0
4F0=kAmaxF0 to
7
F
0
7F0
7F0, b)为放大帧中与有限数量的第三个潜在音高标记
(
l
=
3
)
(l = 3)
(l=3)
准则
C
(
l
)
C(l)
C(l) 估计对应于频率
F
0
i
F^{i}_0
F0i 的潜在音高标记
n
i
,
l
n_{i,l}
ni,l 的声音样本的谐波相位和从频率
F
0
i
−
N
s
F_{0_{i-N_s}}
F0i−Ns 到
F
0
i
−
1
F_{0_{i-1}}
F0i−1 提取的 Ns 个声音样本的相同谐波的相位之间的相位差。最佳音高标记
n
i
,
l
i
,
o
p
t
n_{i,l_{i,opt}}
ni,li,opt 使
C
(
l
)
C(l)
C(l)最小化。
进行了实验以确定谐波数和提取样本数 N s Ns Ns 的实际值,以考虑计算 ϕ F 0 i , k ‾ \overline{\phi_{F^{i}_0,k}} ϕF0i,k. 使用大约 8 个谐波获得了良好的结果。 在实践中,更高数量的谐波会增加算法的计算量,而不会提高合成质量。事实上,两者之间存在相关性发动机噪声的谐波相位,因此,同步低次谐波的相位也改善了高次谐波的相位匹配。选择数量 N s Ns Ns使得标准 C ( l ) C(l) C(l) 保证在合成阶段可能被连接的声音样本之间的相位连续性。 在实践中, N s Ns Ns可以设置为 10,如第 5.2 节所述。
4.2 创建样本数据集
一旦一个音高标记被最佳放置,相应的声音样本就会被提取出来。现有 OLA 方法中样本提取包络的标准选择是包含整数个基音周期的汉宁窗。该窗口在合成阶段需要 50% 的重叠,因此在复杂性方面不是最佳的。较短的重叠窗口(例如图 2 中的 Tukey 窗口)是可取的。 窗口长度被调整为包含整数个基音周期加上 Δ(起音长度的一半 (Δ/2) 和释放长度的一半 (Δ/2),参见图 2)。
图.2. Tukey 窗口(粗线)应用于提取对应于基频
F
i
F_i
Fi 的声音样本(示意图)
F
0
i
=
F
e
x
/
4
F^{i}_0 = F_{ex}/4
F0i=Fex/4(四缸发动机)。
n
i
,
l
i
,
o
p
t
n_{i,l_{i,opt}}
ni,li,opt 位置是所考虑的基频的选定音高标记。在合成阶段,连续的声音样本仅重叠 Δ 个样本。 为了进一步简化算法,长度 Δ 保持不变并在实践中设置为 128 个样本,即,对于 44.1 kHz 采样信号,约为 3 ms。 在发动机噪声的特定情况下,提取窗口设置为包含一个周期的基频加 Δ。这种选择是相关的,因为单个基本周期包括发动机所有气缸的爆炸。 因此,每个提取的声音样本都包含有关给定转速下发动机声音的所有信息。
5. 合成
5.1. 重叠相加处理
在分析阶段创建的样本数据集允许通过重叠和添加声音样本来合成任何基本频率演变。声音样本被选择(参见第 5.2 节)并与上一节中定义的样本包络的 Δ 样本重叠连接(参见图 3)。
图 3. 使用 HSOLA 合成方案的相位匹配应用于不同的基频声音样本。
选择的重叠足以抑制由连续声音样本之间的频率和幅度的微小差异引起的感知伪影。
由于样本边界处的相位被调整为连续的,因此在分析阶段执行的音高和谐波同步显着提高了这种具有低重叠的合成方案的质量。
5.2. 样品选择
实施特定的样本选择算法以确保高质量合成。 在基本频率恒定或缓慢变化的情况下(发动机状态),将伪随机振荡添加到数据集中选定的样本索引中。从而避免了由于连续选择相同样本而引起的可听伪影。该振荡近似为零均值,以确保合成信号的平均基波与目标值匹配。该振荡近似为零均值,以确保合成信号的平均基波与目标值匹配。振荡的最大幅度 α 必须足够大,以便为声音样本的选择提供足够的选择,但不应引起大的基频不连续性。在实践中,α = 5 代表了一个很好的权衡。 α值也会影响声音数量的选择。
值 α 还影响在分析阶段计算
ϕ
F
0
i
,
k
‾
\overline{\phi_{F^{i}_0,k}}
ϕF0i,k时要考虑的声音样本数
N
s
Ns
Ns的选择(参见第 4.1 节)。 为了确保良好的相位连续性之间声音样本可能被连接,
N
s
Ns
Ns 应设置为连续选择的声音样本之间样本索引的最大可能变化。 发动机转速的快速变化很少发生。 因此,考虑到伪随机数,
N
s
Ns
Ns 可以设置为 2α。
所提出的 HSOLA 分析/综合方案的主要优点是大部分算法的复杂性被转移到分析阶段,该分析阶段在预处理阶段离线执行。合成阶段的操作仅限于选择数据集中的每个声音样本,以及为每个选定的声音样本添加 Δ 个样本。 因此,HSOLA 方法特别适用于发动机声音的实时合成。
6. HSOLA 方法的性能
6.1. 基于频谱图的评估
使用所提出的 HSOLA 方法分析合成信号的频谱内容为评估算法的性能提供了有价值的材料。记录了两个具有不同基频变化的发动机噪声信号。第一个信号,称为输入 1,用于创建两个样本数据集,第一个使用基于单谐波相位匹配的音调标记,第二个使用多谐波相位匹配,如第 4.1 节中定义。第二个信号(称为输入 2)的基频用作合成发动机噪声信号的指令。
图 4 显示了两个输入信号和两个合成信号的频谱图。 它们是使用长度为 200 毫秒的 Hanning 窗口获得的,该窗口经过零填充到 743 毫秒(32768 点),重叠率为 50%。采样频率为 44100 Hz。 为了更好地显示合成信号的谐波含量,仅显示 0 到 1000 Hz 之间的缩放。
频谱图图 4© 和图 4(d) 之间的差异说明了声音样本之间的相位连续性对合成信号的谐波的重要性。 在单次谐波相位匹配的情况下,图 4©,只有爆炸频率
F
e
x
F_{ex}
Fex 及其谐波被正确渲染。另一方面,多谐波相位匹配(图 4(d))成功地保留了发动机噪声信号的大部分谐波含量。多个谐波的相位匹配大大提高了合成信号的质量。
图 4 输入 1 (a)、输入 2 (b) 的频谱图,输入 2 速度变化与单次谐波 © 和多次谐波 (d) 相位匹配的合成输出。
6.2. 感知评估
在音质方面,非正式的听音测试表明,使用 HSOLA 方法合成的声音信号在感知上接近输入 2 信号。此外,在固定基频命令的情况下,5.2 中提出的随机样本选择算法是有效的。没有听得见的样本重复,由此产生的感知音高听起来是静止的。
将进行基于心理声学测试程序的更彻底的听力实验,以评估算法不同步骤的性能,例如样本定位过程和随机样本选择算法。
7. 结论
本文提出了一种合成发动机噪声的方法。介绍了。如果其频谱内容仅取决于瞬时基频值,则这种称为 HSOLA 的方法可用于合成具有变化基频的任何谐波信号。它旨在从记录的内燃机噪音中提取与同等采样的基频值相对应的声音样本数据集。可以使用适当的样本选择和重叠相加算法来连接声音样本,以模拟任何基频演变。HSOLA 方法的主要特点是优化输入信号中的样本位置,使合成信号的谐波相位趋于连续。 结果表明,这种连续性确保了发动机噪声的谐波得以保持。此外,使用 HSOLA 方法合成引擎信号的低复杂性使其特别适用于实时合成应用。
8. REFERENCES
- [1] J. Van Rensburg, “Phase vocoder technology for the simulation of engine sound,” Int. Journal of Modern Physics C, vol. 17, pp. 721–731, 2006.
- [2] K. Genuit andW. R. Bray, “Prediction of sound and vibration in a virtual automobile,” Journal of Sound and Vibration, vol. 36, no. 7, pp. 12–19, 2002.
- [3] J-F. Sciabica, M-C. B´ezat, V. Roussarie, R. Kronland-Martinet, and S. Ystad, “Towards timbre modeling of sounds inside accelerating cars,” Auditory Display, vol. 5954, pp. 377–391, 2009.
- [4] S. Roucos and A. Wilgus, “High quality time-scale modifications for speech,” ICASSP’85, pp. 236–239, 1985.
- [5] D. L. Jones and T. W. Parks, “Generation and combination of grains for music synthesis,” Computer Music Journal, vol. 12, pp. 27–34, 1988.
- [6] E. Moulines and F. Charpentier, “Pitch synchronous waveform processing techniques for text-to speech synthesis using diphones,” Speech Communication, vol. 9(5/6), pp. 453–467, 1990.
- [7] W. Verhelst and M. Roelands, “An overlap-add technique based on waveform similarity (wsola) for high quality time-scale modifications of speech,” ICASSP’93, pp. 554–557, 1993.
- [8] S. Zahorian and H. Hu, “A spectral/temporal method for robust fundamental frequency tracking,” Journal of the Acoustical Society of America, vol. 123, pp. 4559–4571, 2008.
参考:http://www.pesport.com.cn/?p=369