Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
2450591a
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
大约 2 年 前同步成功
通知
210
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看板
提交
2450591a
编写于
6月 21, 2017
作者:
chrisxu2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add 3 augmentor class and change resample module
上级
5398360e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
12 addition
and
74 deletion
+12
-74
data_utils/audio.py
data_utils/audio.py
+7
-9
data_utils/augmentor/resample.py
data_utils/augmentor/resample.py
+4
-1
requirements.txt
requirements.txt
+1
-0
tests/test_augmentor.py
tests/test_augmentor.py
+0
-64
未找到文件。
data_utils/audio.py
浏览文件 @
2450591a
...
...
@@ -6,7 +6,7 @@ from __future__ import print_function
import
numpy
as
np
import
io
import
soundfile
import
scikits.samplerate
import
resampy
from
scipy
import
signal
import
random
import
copy
...
...
@@ -321,21 +321,19 @@ class AudioSegment(object):
gain_db
=
target_db
-
rms_estimate_db
self
.
apply_gain
(
gain_db
)
def
resample
(
self
,
target_sample_rate
,
quality
=
'sinc_medium
'
):
def
resample
(
self
,
target_sample_rate
,
filter
=
'kaiser_best
'
):
"""Resample the audio to a target sample rate.
Note that this is an in-place transformation.
:param target_sample_rate: Target sample rate.
:type target_sample_rate: int
:param quality: One of {'sinc_fastest', 'sinc_medium', 'sinc_best'}.
Sets resampling speed/quality tradeoff.
See http://www.mega-nerd.com/SRC/api_misc.html#Converters
:type quality: str
:param filter: The resampling filter to use one of {'kaiser_best',
'kaiser_fast'}.
:type filter: str
"""
resample_ratio
=
target_sample_rate
/
self
.
_sample_rate
self
.
_samples
=
scikits
.
samplerate
.
resample
(
self
.
_samples
,
r
=
resample_ratio
,
type
=
quality
)
self
.
_samples
=
resampy
.
resample
(
self
.
samples
,
self
.
sample_rate
,
target_sample_rate
,
filter
=
filter
)
self
.
_sample_rate
=
target_sample_rate
def
pad_silence
(
self
,
duration
,
sides
=
'both'
):
...
...
data_utils/augmentor/resample.py
浏览文件 @
2450591a
...
...
@@ -8,6 +8,9 @@ from data_utils.augmentor.base import AugmentorBase
class
ResampleAugmentor
(
AugmentorBase
):
"""Augmentation model for resampling.
See more info here:
https://ccrma.stanford.edu/~jos/resample/index.html
:param rng: Random generator object.
:type rng: random.Random
...
...
@@ -27,4 +30,4 @@ class ResampleAugmentor(AugmentorBase):
:param audio: Audio segment to add effects to.
:type audio: AudioSegment|SpeechSegment
"""
audio_segment
.
resample
(
self
.
_new_sample_rate
)
audio_segment
.
resample
(
self
.
_new_sample_rate
)
\ No newline at end of file
requirements.txt
100644 → 100755
浏览文件 @
2450591a
SoundFile
==0.9.0.post1
wget
==3.2
scipy
==0.13.1
resampy
==0.1.5
\ No newline at end of file
tests/test_augmentor.py
已删除
100755 → 0
浏览文件 @
5398360e
"""Test augmentor class."""
from
__future__
import
absolute_import
from
__future__
import
division
from
__future__
import
print_function
import
unittest
from
data_utils
import
audio
from
data_utils.augmentor.augmentation
import
AugmentationPipeline
import
random
import
numpy
as
np
random_seed
=
0
audio_data
=
[
3.0517571e-05
,
-
8.54492188e-04
,
-
1.09863281e-03
,
-
9.4604492e-04
,
\
-
1.31225586e-03
,
-
1.09863281e-03
,
-
1.73950195e-03
,
-
2.1057189e-03
,
\
-
2.04467773e-03
,
-
1.46484375e-03
,
-
1.43432617e-03
,
-
9.4604492e-04
,
\
-
1.95312500e-03
,
-
1.86157227e-03
,
-
2.10571289e-03
,
-
2.3193354e-03
,
\
-
2.01416016e-03
,
-
2.62451172e-03
,
-
2.07519531e-03
,
-
2.3803719e-03
]
audio_data
=
np
.
array
(
audio_data
)
samplerate
=
10
class
TestAugmentor
(
unittest
.
TestCase
):
def
test_volume
(
self
):
config_json
=
'[{"type": "volume","params": {"min_gain_dBFS": -15, '
\
'"max_gain_dBFS": 15},"prob": 1.0}]'
aug_pipeline
=
AugmentationPipeline
(
augmentation_config
=
config_json
,
random_seed
=
random_seed
)
audio_seg
=
audio
.
AudioSegment
(
audio_data
,
samplerate
)
aug_pipeline
.
transform_audio
(
audio_seg
)
orig_audio
=
audio
.
AudioSegment
(
audio_data
,
samplerate
)
self
.
assertFalse
(
np
.
any
(
audio_seg
.
samples
==
orig_audio
.
samples
))
def
test_speed
(
self
):
config_json
=
'[{"type":"speed","params": {"min_speed_rate": 1.2,'
\
'"max_speed_rate": 1.4},"prob": 1.0}]'
aug_pipeline
=
AugmentationPipeline
(
augmentation_config
=
config_json
,
random_seed
=
random_seed
)
audio_seg
=
audio
.
AudioSegment
(
audio_data
,
samplerate
)
aug_pipeline
.
transform_audio
(
audio_seg
)
orig_audio
=
audio
.
AudioSegment
(
audio_data
,
samplerate
)
self
.
assertFalse
(
np
.
any
(
audio_seg
.
samples
==
orig_audio
.
samples
))
def
test_resample
(
self
):
config_json
=
'[{"type":"resample","params": {"new_sample_rate":5},'
\
'"prob": 1.0}]'
aug_pipeline
=
AugmentationPipeline
(
augmentation_config
=
config_json
,
random_seed
=
random_seed
)
audio_seg
=
audio
.
AudioSegment
(
audio_data
,
samplerate
)
aug_pipeline
.
transform_audio
(
audio_seg
)
self
.
assertTrue
(
audio_seg
.
sample_rate
==
5
)
def
test_bayesial
(
self
):
config_json
=
'[{"type":"bayesian_normal","params":{"target_db":-20,'
\
'"prior_db":-4, "prior_samples": -8, "startup_delay": 0.0},"prob":1.0}]'
aug_pipeline
=
AugmentationPipeline
(
augmentation_config
=
config_json
,
random_seed
=
random_seed
)
audio_seg
=
audio
.
AudioSegment
(
audio_data
,
samplerate
)
aug_pipeline
.
transform_audio
(
audio_seg
)
orig_audio
=
audio
.
AudioSegment
(
audio_data
,
samplerate
)
self
.
assertFalse
(
np
.
any
(
audio_seg
.
samples
==
orig_audio
.
samples
))
if
__name__
==
'__main__'
:
unittest
.
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录