Select Git revision
sozoeko1.Rd
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
make_hmm 1.21 KiB
#!/usr/bin/env python3
"""make_hmm.py
(c) Michael Blaß, 2016
Train a PoissonHmm
"""
import pathlib
from optparse import OptionParser
import sys
from apollon import segment
from apollon.audio import load_audio
from apollon.onsets import FluxOnsetDetector
from apollon.signal.spectral import Spectrum
from apollon.hmm import PoissonHmm
from apollon.io import save
def main():
def verbose_msg(s):
if opts.verbose:
print(s)
usage = 'usage: %prog [OPTIONS] path_to_wav'
parser = OptionParser(usage=usage)
parser.add_option('-v', '--verbose', action='store_true',
help='enable verbose mode')
(opts, args) = parser.parse_args()
if len(args) == 0:
print('Path to .wav-file not specified.')
sys.exit(1)
snd = load_audio(args[0])
onsets = FluxOnsetDetector(snd.data, snd.fps)
segs = segment.by_onsets(snd.data, 2**11, onsets.index())
spctr = Spectrum(segs, snd.fps, window='hamming')
feat = spctr.centroid().round().astype(int)
mod = PoissonHmm(feat, 4, verbose=False)
mod.fit(feat)
# save model
out_fname = snd.file.stem + '.hmm'
save(mod.params.gamma_, out_fname)
if __name__ == "__main__":
sys.exit(main())