Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
0adfd7e3
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
1 年多 前同步成功
通知
207
Star
8425
Fork
1598
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
245
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeech
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
245
Issue
245
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0adfd7e3
编写于
6月 15, 2021
作者:
H
Hui Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more frontend utils
上级
5f94f4e4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
87 addition
and
1 deletion
+87
-1
third_party/paddle_audio/frontend/common.py
third_party/paddle_audio/frontend/common.py
+87
-1
未找到文件。
third_party/paddle_audio/frontend/common.py
浏览文件 @
0adfd7e3
...
...
@@ -96,6 +96,22 @@ def dft_matrix_fast(n_fft:int, winlen:int=None, n_bin:int=None) -> Tuple[np.ndar
w_real
=
weight
.
real
w_imag
=
weight
.
imag
return
w_real
,
w_imag
,
kernel_size
def
bin2hz
(
bin
:
Union
[
List
[
int
],
np
.
ndarray
],
N
:
int
,
sr
:
int
)
->
List
[
float
]:
"""FFT bins to Hz.
http://practicalcryptography.com/miscellaneous/machine-learning/intuitive-guide-discrete-fourier-transform/
Args:
bins (List[int] or np.ndarray): bin index.
N (int): the number of samples, or FFT points.
sr (int): sampling rate.
Returns:
List[float]: Hz's.
"""
hz
=
bin
*
float
(
sr
)
/
N
def
hz2mel
(
hz
):
...
...
@@ -106,10 +122,80 @@ def hz2mel(hz):
"""
return
1127
*
np
.
log
(
1
+
hz
/
700.0
)
def
mel2hz
(
mel
):
"""Convert a value in Mels to Hertz
:param mel: a value in Mels. This can also be a numpy array, conversion proceeds element-wise.
:returns: a value in Hertz. If an array was passed in, an identical sized array is returned.
"""
return
700
*
(
np
.
exp
(
mel
/
1127.0
)
-
1
)
\ No newline at end of file
return
700
*
(
np
.
exp
(
mel
/
1127.0
)
-
1
)
def
rms_to_db
(
rms
:
float
):
"""Root Mean Square to dB.
Args:
rms ([float]): root mean square
Returns:
float: dB
"""
return
20.0
*
math
.
log10
(
max
(
1e-16
,
rms
))
def
rms_to_dbfs
(
rms
:
float
):
"""Root Mean Square to dBFS.
https://fireattack.wordpress.com/2017/02/06/replaygain-loudness-normalization-and-applications/
Audio is mix of sine wave, so 1 amp sine wave's Full scale is 0.7071, equal to -3.0103dB.
dB = dBFS + 3.0103
dBFS = db - 3.0103
e.g. 0 dB = -3.0103 dBFS
Args:
rms ([float]): root mean square
Returns:
float: dBFS
"""
return
rms_to_db
(
rms
)
-
3.0103
def
max_dbfs
(
sample_data
:
np
.
ndarray
):
"""Peak dBFS based on the maximum energy sample.
Args:
sample_data ([np.ndarray]): float array, [-1, 1].
Returns:
float: dBFS
"""
# Peak dBFS based on the maximum energy sample. Will prevent overdrive if used for normalization.
return
rms_to_dbfs
(
max
(
abs
(
np
.
min
(
sample_data
)),
abs
(
np
.
max
(
sample_data
))))
def
mean_dbfs
(
sample_data
):
"""Peak dBFS based on the RMS energy.
Args:
sample_data ([np.ndarray]): float array, [-1, 1].
Returns:
float: dBFS
"""
return
rms_to_dbfs
(
math
.
sqrt
(
np
.
mean
(
np
.
square
(
sample_data
,
dtype
=
np
.
float64
))))
def
gain_db_to_ratio
(
gain_db
:
float
):
"""dB to ratio
Args:
gain_db (float): gain in dB
Returns:
float: scale in amp
"""
return
math
.
pow
(
10.0
,
gain_db
/
20.0
)
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录