Hello all,
Looking back at 2003 in the archives, I see:
Johannes Taelman Johannes.Taelman at rug.ac.be Sun Feb 9 16:02:55 CET 2003
On Sat, 8 Feb 2003, Mark Khemma wrote:
check pd/doc/2.control.examples/21.markov.chain.pl
That's a markov chain, but not a hidden markov model. I was looking
for the forward backward, viterbi, and baum-welch algorithms. I'll
probably write an external for it sooner or later. Ideas welcome.j#|@
Did Johannes ever write that? Has anyone else implemented HMM Baum- Welch?
d
-- David Plans Casal Researcher, UEA Studios d.casal at uea dot ac dot uk http://www.davidcasal.com
Hi David,
Wow that's a long echo from the past! No I never made any HMM external.
Past years I've been working mostly on microcontrollers/sensors/actuators, only using pd as a testbed or completely standalone. I still monitor this list though I haven't contributed anything in ages.
regards j#|@
David Plans Casal wrote:
Hello all,
Looking back at 2003 in the archives, I see:
Johannes Taelman Johannes.Taelman at rug.ac.be Sun Feb 9 16:02:55 CET 2003
On Sat, 8 Feb 2003, Mark Khemma wrote:
check pd/doc/2.control.examples/21.markov.chain.pl
That's a markov chain, but not a hidden markov model. I was looking for the forward backward, viterbi, and baum-welch algorithms. I'll probably write an external for it sooner or later. Ideas welcome.
j#|@
Did Johannes ever write that? Has anyone else implemented HMM Baum- Welch?
d
-- David Plans Casal Researcher, UEA Studios d.casal at uea dot ac dot uk http://www.davidcasal.com
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
moin David,
I haven't implemented Baum-Welch, but there is a Viterbi implementation in the [gfsm] library (which has Pd wrappers), although I haven't ported the Viterbi stuff to Pd yet, since it's still pretty new. In general, HMMs can be represented as finite state machines (a la gfsm), but if you really want a "pure" HMM (all transitions with nonzero probability), using an FSM would be a waste of memory. If you're interested anyways, gfsm is here:
http://www.ling.uni-potsdam.de/~moocow/projects/gfsm
... and the pd wrappers are on sf-cvs in externals/moocow/gfsm
marmosets, Bryan
On 02/07/2006 07:00:05 PM, David Plans Casal main@davidcasal.com appears to have written:
Hello all,
Looking back at 2003 in the archives, I see:
Johannes Taelman Johannes.Taelman at rug.ac.be Sun Feb 9 16:02:55 CET 2003
On Sat, 8 Feb 2003, Mark Khemma wrote:
check pd/doc/2.control.examples/21.markov.chain.pl
That's a markov chain, but not a hidden markov model. I was looking for the forward backward, viterbi, and baum-welch algorithms. I'll probably write an external for it sooner or later. Ideas welcome.
j#|@
Did Johannes ever write that? Has anyone else implemented HMM Baum- Welch?
d
-- David Plans Casal Researcher, UEA Studios d.casal at uea dot ac dot uk http://www.davidcasal.com
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hey Bryan,
On 9 Feb 2006, at 09:13, Bryan Jurish wrote:
I haven't implemented Baum-Welch, but there is a Viterbi
implementation in the [gfsm] library (which has Pd wrappers), although I haven't
ported the Viterbi stuff to Pd yet, since it's still pretty new.
Do you mean the Viterbi stuff is not in moocow/gfsm?
Could I use the gfsm perl bindings you made?
In general, HMMs can be represented as finite state machines (a la gfsm), but
if you really want a "pure" HMM (all transitions with nonzero probability), using an FSM would be a waste of memory.
I need to use an HMM-like algorithm to train audio classifiers.
Essentially, I need to spot things like presence or absence of human
voice, 'genre' (production specific), etc. I'll be using MPEG7
descriptions (features extracted using an mpeg7 encoder) in XML.
Do you think Viterbi could work for this case?
Advice welcome.
... and the pd wrappers are on sf-cvs in externals/moocow/gfsm
marmosets,
hey you're the original marmosets signature guy, ain't ya?
or was that yves d...hm
d
-- David Plans Casal Researcher, UEA Studios d.casal at uea dot ac dot uk http://www.davidcasal.com
moin David,
On 02/09/2006 10:07:54 PM, David Plans Casal main@davidcasal.com appears to have written:
On 9 Feb 2006, at 09:13, Bryan Jurish wrote:
I haven't implemented Baum-Welch, but there is a Viterbi implementation in the [gfsm] library (which has Pd wrappers), although I haven't ported the Viterbi stuff to Pd yet, since it's still pretty new.
Do you mean the Viterbi stuff is not in moocow/gfsm?
right, it's only been added to libgfsm recently, and I'm still not too sure about the API. Right now, you need to explicitly build the Viterbi trellis as an FSM [using gfsm_automaton_lookup_viterbi_full()], Then you need to call either gfsm_viterbi_trellis_paths_full() or gfsm_viterbi_trellis_bestpath_full() to get the path(s) out of the trellis.
Could I use the gfsm perl bindings you made?
Sure - it looks like (most of) the relevant XS routines are defined. If you're into using Perl though, can I reccommend PDL::HMM ?
http://www.ling.uni-potsdam.de/~moocow/projects/perl/PDL-HMM-0.04.tar.gz
... that's tailored for "pure" 1st-order HMMs (class bigram models), and it has the forward-, backward-, viterbi-, and Baum-Welch algorithms all implemented.
I need to use an HMM-like algorithm to train audio classifiers. Essentially, I need to spot things like presence or absence of human voice, 'genre' (production specific), etc. I'll be using MPEG7 descriptions (features extracted using an mpeg7 encoder) in XML.
I'm not entirely clear on what you're after -- I'm a symbolic kind of guy; all my HMM and FSM stuff is geared pretty heavily towards modelling discrete domains. I know that "continuous" HMMs exist and that they can be used to get discrete representations for continuous domains, but that's about where my knowledge of them ends. afaik, they're pretty much the same beasts as their discrete cousins, but the observation probabilities get a bit hairier to work with: can anyone on the list clear me up on this?
Do you think Viterbi could work for this case?
If you're talking about continuous (signal) input, my stuff probably won't work "out of the box", although feel free to adapt and extend and send me patches [or just get me to put libgfsm on sourceforge] ;-) In that case, though, you're honestly probably better off starting with a different toolkit (I think torch and GHMM both have support for continuous models).
That said, if your're looking to do Viterbi decoding with GFSM at runtime in Pd, I'm certainly interested in adding the support to the pd-gfsm wrappers: maybe I'll get around to that this weekend, as yet another excuse not to work on my dissertation ;-)
marmosets,
hey you're the original marmosets signature guy, ain't ya?
guilty as charged.
peace, love, and small monkeys with big hair, Bryan