繁体   English   中英

Meyda 特征提取的数据在命令行和通过 nodejs 不同

[英]Meyda feature extracted dat is different in command line and through nodejs

我尝试使用 Meyda 提取音频文件的特征。 但是当使用命令行 meyda 和通过 javascript 文件提取时,特征提取值是不同的

  1. 命令行

    梅达 1600153162.63571.wav mfcc

结果

0.057628476337413304,0.025103534166687494,-0.0033402018588145435,-0.0050914619032203364,-0.005969043107840086,-0.009452339628697326,-0.0077781823184730455,-0.0024033016732702066,-0.0033368248853514206,-0.0012372591871309979,0.00003587458387239886,0.00293735474906295,0.0033156231532707036 1.4306079393227265,1.3713938566968262,1.2306487569743767,1.0515807610571597,0.8414768385049735,0.6060415036630535,0.37326507523088365,0.1654296077929904, - 0.015392187854876595,-0.1652509593657213,-0.27571446879975764,-0.340564139593766,-0.36505384389267703 9.282664122642018,6.880236029290547,3.3870794551074606,1.7170683624244123,-0.29657914336587826,-3.18544774959499,-4.433789386396694,-3.7101490665746217,-2.816738558429225,-2.2736417577176273,-1.6636438686466657,-0.8537746809738949,-0.5116463089021152 25.65632094501052,22.93621824737729 ,16.08611763344924,7.490656903754756,-0.4358888007314062,-5.641656791337735,-7.229285832273481,-5.635856022395436,-2.1681330598896817,1.5575050036371694,4.29638119563214 9,5.45750656573637,5.059966218569768 23.469876801827922,20.984500104582974,15.80549272827184,10.064116650359527,3.957435073588796,-1.75506262168123,-5.904087102697238,-8.29320895086182,-9.037630914839253,-8.230609293960022,-6.604159793447832,-4.8505887091085365,-3.2390627275186175 29.14206006610766,25.50517483703385,19.279159148659456,13.806566615476791,7.715092034538,2.2364700767576764, -0.8129542016331001,-2.16772108652068,-2.6257181917727093,-2.1347711722007845,-1.0689231846996041,-0.6059541306434987,-0.9955650805848651 12.251538716256618,9.479093353756676,5.26726325506769,2.7893618666871762,0.10288164291841367,-3.121859159330943,-4.446188894370852,-3.5959072906303837,-2.5699522942015007,-1.8300687753240275,-0.7140618177046422,0.3644613187160053, 0.8353185065087604 18.42772721964866,15.990459244575096,11.993313228734504,9.088259023158539,6.172351883886699,2.6632784721745213,-0.2683186290158647,-1.948275236251193,-2.793271841187546,-3.305172382572076,-3.6707865100252994,-3.638999985131 219,-2.863263822827715 15.915610973257571,13.737073178518493,9.801934620786648,5.779403187264773,1.358952752885622,-2.5086411759816647,-5.187471901991046,-7.0034704192058985,-7.837140523422115,-7.437282553994893,-6.058991955183858,-4.360246975428363,-2.680629805396066 15.75090683856979,13.497089898444463,9.489154494388005,5.578283842168272,1.4567586737610156,-2.141429668615224, -4.380728646793593,-5.364310654901947,-5.049848052960211,-4.214979808517224,-3.9745754014376224,-4.076571890925421,-4.020714303609834 23.361729244701564,20.83103985201436,16.592090051349242,12.885538444506535,8.373777248668826,2.9768227085972145,-1.399644048138661,-4.090450595665753,-5.574775136428788,-5.787457864519816,-4.693018758118676,-3.100993535744204, -1.5625546377399475 12.793707716744393,10.197116076581045,5.819041457288568,2.4679725003955064,-0.33041998215142393,-2.607817847380143,-4.086120143731154,-4.779218992884254,-4.374465394096245,-3.118504640745296,-1.9666020102081847,-1.5140789377241373,-1.513064 7010950313 3.2732387410942465,2.2453286293698977,0.9749483649128511,0.472715919767034,0.11249067642678866,-0.19927487640318992,-0.24286230087509772,-0.3645480814147444,-0.5060378572115204,-0.4793996411313405,-0.45934442588699886,-0.4680761055711004,-0.2967506177492105

  1. 通过 javascript 文件

     var express = require('express'); var app = express(); const fs = require('fs'); var Meyda = require('meyda'); var load = require('audio-loader') let filename = "1600153162.63571.wav" load(filename).then(function (buffer) { const channelData = buffer.getChannelData(0) const PaddingLength = (Math.pow(2,Math.round(Math.log2(channelData.length)+1)) - channelData.length) let halfPaddingLength = parseInt(PaddingLength/2) const pad1 = new Array(halfPaddingLength).fill(0); const pad2 = new Array(PaddingLength - halfPaddingLength).fill(0); let finalBbuffer = [...pad1,...channelData,...pad2] console.log(finalBbuffer.length) let mfccData = Meyda.extract('mfcc', finalBbuffer) console.log("mfccData : ",mfccData); });

结果 :

[249.11783051490784,-90.61751411189829,-12.253094024524968,19.88245460444982,-11.661965456271869,-14.795375019626466,7.19298966815922,8.362884489124907,3.9941283332736557,-3.2158388656478287,-2.0395393071161063,-0.48849176751482837,-3.6199623273626695]

为什么会有这种差异。 如何使它们相同?

它们是不同的,因为您在代码中填充缓冲区,而命令行工具将文件拆分为具有默认缓冲区大小的多个缓冲区,并为每个段返回 MFCC。

为了使它们相同,您可以复制 CLI 在代码中执行的缓冲区分块,而不是对整个缓冲区进行零填充,或者您可以制作一个对输入进行零填充的 CLI。 如果您选择后者,我们当然有兴趣将该功能添加到捆绑的 CLI 中,因此请随时在我们的问题跟踪器上打开一个问题,以讨论您是否走这条路并希望做出贡献。

感谢您使用 Meyda!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM