Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
d1ee10be
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看板
提交
d1ee10be
编写于
6月 16, 2017
作者:
chrisxu2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify audio and speech
上级
d66d740e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
34 addition
and
6 deletion
+34
-6
data_utils/audio.py
data_utils/audio.py
+8
-6
data_utils/speech.py
data_utils/speech.py
+26
-0
未找到文件。
data_utils/audio.py
浏览文件 @
d1ee10be
...
...
@@ -104,7 +104,8 @@ class AudioSegment(object):
io
.
BytesIO
(
bytes
),
dtype
=
'float32'
)
return
cls
(
samples
,
sample_rate
)
def
concatenate
(
self
,
*
segments
):
@
classmethod
def
concatenate
(
cls
,
*
segments
):
"""Concatenate an arbitrary number of audio segments together.
:param *segments: Input audio segments
...
...
@@ -123,11 +124,11 @@ class AudioSegment(object):
if
sample_rate
!=
seg
.
_sample_rate
:
raise
ValueError
(
"Can't concatenate segments with "
"different sample rates"
)
if
type
(
seg
)
is
not
type
(
self
)
:
if
type
(
seg
)
is
not
cls
:
raise
TypeError
(
"Only audio segments of the same type "
"instance can be concatenated."
)
samples
=
np
.
concatenate
([
seg
.
samples
for
seg
in
segments
])
return
type
(
self
)
(
samples
,
sample_rate
)
return
cls
(
samples
,
sample_rate
)
def
to_wav_file
(
self
,
filepath
,
dtype
=
'float32'
):
"""Save audio segment to disk as wav file.
...
...
@@ -355,13 +356,14 @@ class AudioSegment(object):
"""
if
duration
==
0.0
:
return
self
cls
=
type
(
self
)
silence
=
self
.
make_silence
(
duration
,
self
.
_sample_rate
)
if
sides
==
"beginning"
:
padded
=
self
.
concatenate
(
silence
,
self
)
padded
=
cls
.
concatenate
(
silence
,
self
)
elif
sides
==
"end"
:
padded
=
self
.
concatenate
(
self
,
silence
)
padded
=
cls
.
concatenate
(
self
,
silence
)
elif
sides
==
"both"
:
padded
=
self
.
concatenate
(
silence
,
self
,
silence
)
padded
=
cls
.
concatenate
(
silence
,
self
,
silence
)
else
:
raise
ValueError
(
"Unknown value for the kwarg %s"
%
sides
)
self
.
_samples
=
padded
.
_samples
...
...
data_utils/speech.py
浏览文件 @
d1ee10be
...
...
@@ -65,6 +65,32 @@ class SpeechSegment(AudioSegment):
audio
=
AudioSegment
.
from_bytes
(
bytes
)
return
cls
(
audio
.
samples
,
audio
.
sample_rate
,
transcript
)
@
classmethod
def
concatenate
(
cls
,
*
segments
):
"""Concatenate an arbitrary number of audio segments together.
:param *segments: Input speech segments
:type *segments: SpeechSegment
:return: Speech segment instance.
:rtype: SpeechSegment
:raises ValueError: If number of segments is zero, or if sample_rate
not match between two audio segments
:raises TypeError: If item of segments is not Audiosegment instance
"""
# Perform basic sanity-checks.
if
len
(
segments
)
==
0
:
raise
ValueError
(
"No audio segments are given to concatenate."
)
sample_rate
=
segments
[
0
].
_sample_rate
for
seg
in
segments
:
if
sample_rate
!=
seg
.
_sample_rate
:
raise
ValueError
(
"Can't concatenate segments with "
"different sample rates"
)
if
type
(
seg
)
is
not
cls
:
raise
TypeError
(
"Only speech segments of the same type "
"instance can be concatenated."
)
samples
=
np
.
concatenate
([
seg
.
samples
for
seg
in
segments
])
return
cls
(
samples
,
sample_rate
,
seg
.
_transcript
)
@
property
def
transcript
(
self
):
"""Return the transcript text.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录