Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
5ca270d3
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看板
提交
5ca270d3
编写于
6月 17, 2017
作者:
chrisxu2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add audio file
上级
d1ee10be
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
161 addition
and
139 deletion
+161
-139
data_utils/audio.py
data_utils/audio.py
+113
-132
data_utils/speech.py
data_utils/speech.py
+48
-7
未找到文件。
data_utils/audio.py
浏览文件 @
5ca270d3
此差异已折叠。
点击以展开。
data_utils/speech.py
浏览文件 @
5ca270d3
...
...
@@ -67,20 +67,20 @@ class SpeechSegment(AudioSegment):
@
classmethod
def
concatenate
(
cls
,
*
segments
):
"""Concatenate an arbitrary number of
audio
segments together.
"""Concatenate an arbitrary number of
speech
segments together.
:param *segments: Input speech segments
: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
:raises ValueError: If
the number of segments is zero, or if the
sample_rate of any two segments does not match.
:raises TypeError: If
every segment in 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
transcripts
=
""
for
seg
in
segments
:
if
sample_rate
!=
seg
.
_sample_rate
:
raise
ValueError
(
"Can't concatenate segments with "
...
...
@@ -88,8 +88,49 @@ class SpeechSegment(AudioSegment):
if
type
(
seg
)
is
not
cls
:
raise
TypeError
(
"Only speech segments of the same type "
"instance can be concatenated."
)
transcripts
+=
seg
.
_transcript
samples
=
np
.
concatenate
([
seg
.
samples
for
seg
in
segments
])
return
cls
(
samples
,
sample_rate
,
seg
.
_transcript
)
return
cls
(
samples
,
sample_rate
,
transcripts
)
@
classmethod
def
slice_from_file
(
cls
,
filepath
,
start
=
None
,
end
=
None
,
transcript
=
""
):
"""Loads a small section of an speech without having to load
the entire file into the memory which can be incredibly wasteful.
:param filepath: Filepath or file object to audio file.
:type filepath: basestring|file
:param start: Start time in seconds. If start is negative, it wraps
around from the end. If not provided, this function
reads from the very beginning.
:type start: float
:param end: End time in seconds. If end is negative, it wraps around
from the end. If not provided, the default behvaior is
to read to the end of the file.
:type end: float
:param transcript: Transcript text for the speech. if not provided,
the defaults is an empty string.
:type transript: basestring
:return: SpeechSegment instance of the specified slice of the input
speech file.
:rtype: SpeechSegment
"""
audio
=
Audiosegment
.
slice_from_file
(
filepath
,
start
,
end
)
return
cls
(
audio
.
samples
,
audio
.
sample_rate
,
transcripts
)
@
classmethod
def
make_silence
(
cls
,
duration
,
sample_rate
):
"""Creates a silent speech segment of the given duration and
sample rate.
:param duration: Length of silence in seconds.
:type duration: float
:param sample_rate: Sample rate.
:type sample_rate: float
:return: Silence of the given duration.
:rtype: AudioSegment
"""
audio
=
AudioSegment
.
make_silence
(
duration
,
sample_rate
)
return
cls
(
audio
.
samples
,
audio
.
sample_rate
,
""
)
@
property
def
transcript
(
self
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录