juliadsp / mfcc.jl Goto Github PK
View Code? Open in Web Editor NEWMel Frequency Cepstral Coefficients calculation for Julia
License: BSD 2-Clause "Simplified" License
Mel Frequency Cepstral Coefficients calculation for Julia
License: BSD 2-Clause "Simplified" License
I suppose this behaviour should be avoided:
julia> using MFCC
julia> X, = mfcc(zeros(1000));
julia> any(isnan.(X))
true
Adding a small constant fixes the problem:
julia> X, = mfcc(zeros(1000).+eps());
julia> any(isnan.(X))
false
not sure this is the common practice though...
Hi just a noob and niether C or Julia savvy but have a vague understanding of what happens with both VAD & MFFC processes.
https://github.com/linto-ai/gpu-ne10-mfcc I noticed they had dropped to use of a python routine in https://github.com/linto-ai/pyrtstools and dunno why but was searching for alternatives.
With VoiceAI it seems common to have a VAD preprocessor that feeds MFCC output as 2 seperate functions and as a noob was just curious if these could be combined with so much similar functionality.
Isn't VAD just creating an overall bin average of what a MFFC would output so the 2 can be combined?
They opted for https://github.com/MycroftAI/sonopy/blob/master/sonopy.py and https://github.com/wiseman/py-webrtcvad and not sure what was wrong with the neon optimised version they had.
PS about all I know about Julia is that it could become a replacement for Python... eventually :)
Its supposed to be fast in the respect to the above what sort of speed increases and load reduction are likely.
Its only curiosity as the repos posted I am not a contributor but as above wondered with the simularity why they are not combined?
Its only curiosity, so can not presure for an answer, but just wondering how it would also relate in performce to native Neon code as in.
https://projectne10.github.io/Ne10/doc/group__groupDSPs.html
Right now feacalc
throws an error, which I traced to
sum
omitting the dims keyword argumentsad
, the other is basically a copy of it, maybe sad
can be called instead?log10
looks like it is supposed to be broadcastedFloat64
should replace float64
sad
looks old and doesn't work now but I still get BoundsErrors even after updating that.readall
in soxread
should also be changed, and maybe also use an open do block?Your top-level license file says BSD-2, but https://github.com/davidavdav/MFCC.jl/blob/master/src/feacalc.jl says GPL. GPL is more restrictive than BSD-2 so should be mentioned in the top-level license file.
The current version of this package, which works with Julia 1.0 and 1.1, is currently not tagged or registered, so it's not possible to install it via Pkg.
There are many issues in JLD already fixed in JLD2 (there's a tag for it).
I just realized this package is not usable in julia v0.7 because of JLD (see JuliaIO/JLD.jl#211).
I suggest we move from JLD to JLD2
julia> x = randn(100000);
julia> audspec(x)
ERROR: UndefVarError: iceil not defined
Stacktrace:
[1] audspec(::Array{Float64,1}, ::Float64) at /home/fredrikb/.julia/packages/MFCC/hoHtE/src/rasta.jl:30 (repeats 2 times)
[2] top-level scope at REPL[16]:1
To HDF5 = "0.12 - 0.17"
.
Also some open issues appear to be resolved so maybe they should be closed?
v0.3.1 is only compatible with v2.6.3 of CUDA.jl (currently on v3.5.0). This breaks audio processing projects that want to use it with the latest version of Flux (which uses the latest CUDA.jl).
This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml
to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix
on this issue.
I'll open a PR within a few hours, please be patient!
As described in https://discourse.julialang.org/t/ann-plans-for-removing-packages-that-do-not-yet-support-1-0-from-the-general-registry/ we are planning on removing packages that do not support 1.0 from the General registry. This package has been detected to not support 1.0 and is thus slated to be removed. The removal of packages from the registry will happen approximately a month after this issue is open.
To transition to the new Pkg system using Project.toml
, see https://github.com/JuliaRegistries/Registrator.jl#transitioning-from-require-to-projecttoml.
To then tag a new version of the package, see https://github.com/JuliaRegistries/Registrator.jl#via-the-github-app.
If you believe this package has erroneously been detected as not supporting 1.0 or have any other questions, don't hesitate to discuss it here or in the thread linked at the top of this post.
Shouldn't the case for the negative lifterexp
passed to the lifter
have the sign of the lifterexp
being negated?
liftw = [1, (1 + lift/2*sin([1:ncep-1]π/lift))]
compared to https://github.com/jameslyons/python_speech_features/blob/master/features/base.py
Your code uses x .+= y
, so you should know that in Julia 0.5 this has changed meaning to be equivalent to broadcast!(identity, x, x .+ y)
, so that it mutates the x
array (see JuliaLang/julia#17510 … in Julia 0.6 the whole operation will occur in-place without temporaries). So .+
should only be used if the left-hand side is a mutable array, and you don't mind mutating it.
At first glance, this looks like it is okay for you, because you use it in y .+= dither * nwin / (sumabs2(window) * sr / 2)
, where y
seems like an array that you won't mind mutating. But if it were a problem you could always change it to +=
.
When I run MFCC like this:
mfcc(sig, MP3PARAMS.rate / float(DOWN_RATIO), modelorder=1)
an error is reported:
ERROR: levinson not defined
in dolpc at ${HOME}\.julia\v0.3\MFCC\src\rasta.jl:174
in mfcc at ${HOME}\.julia\v0.3\MFCC\src\mfccs.jl:29
My Pkg.status()
:
8 required packages:
- DataFrames 0.6.9
- HDF5 0.5.5
- IJulia 1.0.3
- MFCC 0.0.2
- PyPlot 2.1.0
- SPTK 0.0.1
- WORLD 0.1.3
- WinRPM 0.1.12
When modelorder=0
it runs fine.
Without compatibility bounds, MFCC fails to pick up the new version (0.6.1) of DSP.jl which has fixes for JuliaDSP/DSP.jl#320.
Without this, MFCC fails to load.
So that I can do (I can install master):
(@v1.8) pkg> add --preserve=all [email protected]
Resolving package versions...
ERROR: Unsatisfiable requirements detected for package MFCC [ca7b5df7]:
MFCC [ca7b5df7] log:
├─possible versions are: 0.3.1 or uninstalled
└─restricted to versions 0.3.2 by an explicit requirement — no versions left
I'm though not sure why this happened:
(@v1.8) pkg> add --preserve=all MFCC
SpecialFunctions [276daf66] log:
├─possible versions are: 0.7.0-2.1.7 or uninstalled
├─restricted to versions 2.1.7 by an explicit requirement, leaving only versions 2.1.7
└─restricted by compatibility requirements with MFCC [ca7b5df7] to versions: 0.7.0-0.10.3 — no versions left
└─MFCC [ca7b5df7] log:
├─possible versions are: 0.3.1 or uninstalled
└─restricted to versions * by an explicit requirement, leaving only versions 0.3.1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.