我偶然发现了这个不错的教程https://github.com/manashmndl/DeadSimpleSpeechRecognizer其中数据是基于由文件夹分隔的样本进行训练的,所有mfcc都是一次计算的。
我正试图以不同的方式实现类似的目标。
基于此:https://librosa.github.io/librosa/generated/librosa.feature.mfcc.html
librosa可以为任何音频计算mfcc。详情如下:
import librosa
y, sr = librosa.load('test.wav')
mymfcc= librosa.feature.mfcc(y=y, sr =sr)
但我想根据文件中的时间戳逐部分计算音频的mfcc。
该文件具有如下标签和时间戳:
0.0 2.0 sound1
2.0 4.0 sound2
4.0 7.0 silence
7.0 11.0 sound1
我想计算每个范围的mfcc,我希望得到一个带标签的列车数据,看起来像mfcc及其相应的标签。mfcc_1、sound1 mfcc_2、sound2
等等。
我如何做到这一点?
我查看了基于注释文件的音频片段生成mfcc,问题类似,但我发现问题和答案都有点难以理解(因为我对该领域非常陌生)。
TIA
更新:我的代码:
import librosa
from subprocess import call
def ListDir():
call(["ls", "-l"])
def main():
ListDir()
readfile_return_segmentsmfcc()
my_segments =[]
# reading annotated file
def readfile_return_segmentsmfcc():
pat ='000.mp3'
y, sr = librosa.load(pat)
print "\n sample rate :"
print sr
with open("000.txt", "rb") as f:
for line in f.readlines():
start_time, end_time, label = line.split('\t')
start_time = float(start_time)
end_time = float(end_time)
label = label.strip()
my_segments.append((start_time, end_time, label))
start_index = librosa.time_to_samples(start_time)
end_index = librosa.time_to_samples(end_time)
required_slice = y[start_index:end_index]
required_mfcc = librosa.feature.mfcc(y=required_slice, sr=sr)
print "Mfcc size is {} ".format(mfcc.shape)
print start,end,label
return my_segments
main()
>
转换到样本索引使用librosa.time_to_samples
:start_index=librosa.time_to_samples(start)
end_index=librosa.time_to_samples(end)
使用python[:]
运算符从数据中获取相关切片:slice=y[int(开始索引):int(结束索引)]
在切片上计算mfcc
等。
问题内容: 我有一列称为“ s_timestamp”。 如何返回时间戳中具有当天的所有记录? 例如, 我想要以下输出: 让我知道是否不清楚。 问题答案: 只是使用。例如 日期() CURDATE()
问题内容: 我需要计算两个日期之间经过的时间。 这里要注意的是,我需要像YouTube一样用视频评论时间戳来显示它。也就是说,仅以最大的方式显示它。 例如, 如果时间是50秒前,应该说是50秒前。 如果时间超过一分钟,则应说一分钟前/十分钟前,等等。 如果时差是1小时30分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等
本文向大家介绍详解C# TimeSpan 计算时间差(时间间隔),包括了详解C# TimeSpan 计算时间差(时间间隔)的使用技巧和注意事项,需要的朋友参考一下 TimeSpan 结构 表示一个时间间隔。 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 说明: 1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月3
问题内容: 我在一个MySQL数据库表上工作,该表的列包含我对其他主机执行ping操作时的时间戳记(例如2014-09-16 09:08:05)。我的问题是如何在几分钟内计算出针对特定主机的第一次ping和最后一次ping之间的差异?另外,如何为上述差异的开始和结束指定不同的时间戳(而不是第一次和最后一次ping)。这是表格的示例: 我希望我已经对自己的解释足够清楚。 问题答案: 您可以使用本机的
我正在用chartjs绘制一个图形,其中x轴表示时间,y轴表示相应的数据。 现在我得到了今天、上周、上月和去年的数据。 }; 当我绘制图形时,每个点之间的距离是相同的。但这是不正确的,因为时间间隔不相同。 “去年”和“上月”之间的距离应大于“上周”和“上个月”之间的间隔。 任何人一个想法如何我可以实现这与chartjs,当我看留档我没有看到任何选项。