Skip to content
Snippets Groups Projects
Select Git revision
  • 84c1a882fc991d34908eab9ccaae24471ca9460c
  • main default protected
2 results

sozoeko1.Rd

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