python时间戳hour怎么计算_关于python:根据时间戳计算不同时间间隔的mfcc

我碰到了这个不错的教程https://github.com/manashmndl/DeadSimpleSpeechRecognizer,其中数据是根据由文件夹分隔的样本进行训练的,并且所有mfcc都会被立即计算出来。

我正在努力实现类似但又不同的目标。

基于此:https://librosa.github.io/librosa/genic/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,声音1

mfcc_2,声音2

等等。

我该如何实现?

我查看了基于带注释的文件为音频片段生成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"

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()

就我而言,我只是使用`required_slice = y [start_index [0]:end_index [0]"而不必使用int()转换。

阅读开始时间和结束时间:

start=2.0

end=4.0

使用librosa.time_to_samples转换为样本索引:

start_index = librosa.time_to_samples(start)

end_index = librosa.time_to_samples(end)

使用python [:]运算符从数据获取相关切片:

slice = y[int(start_index):int(end_index)]

在slice上计算mfcc,依此类推。

谢谢,让我试试看。

希望对您有所帮助-请考虑接受我的回答。 ;)

谢谢您的回答。请提出如何存储在上一步中生成的mfccs?因为mfcc.shape为(20,X),其中X取决于特定段的长度。因此在上面的示例中,将生成4个不同的mfcc。

我收到以下错误:Traceback (most recent call last): File"generate_mfcc_based_on_segments.py", line 46, in main() File"generate_mfcc_based_on_segments.py", line 10, in main read_annotate_file_return_segments_and_mfcc() File"generate_mfcc_based_on_segments.py", line 33, in read_annotate_file_return_segments_and_mfcc required_slice = y[start_index:end_index] TypeError: only integer scalar arrays can be converted to a scalar index用我的代码更新了问题

该错误是因为index应该是整数。我将转换添加到int

您对是否应使用namedtuple的想法?

能否请您告诉我们如何保存在最后一步中生成的这些mfcc:`required_mfcc = librosa.feature.mfcc(y = required_slice,sr = sr)`

那是比这个问题更广泛的范围,并且高度取决于什么是应用程序以及如何使用保存的数据。如果您提出了一个新的问题,您要达到的目标以及所尝试的目标–您会增加获得帮助的可能性:)

我想输入mfcc和标签来训练神经网络。

@EranW我正在从事一个非常相似的项目,我的问题,方法以及我所困的地方在这里:stackoverflow.com/questions/48514322/如果您能提供一些启发,那将会很棒。谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值