diff options
author | Moonchild <moonchild@palemoon.org> | 2020-05-20 10:19:04 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-05-20 14:04:17 +0000 |
commit | 99c2e698d2a3c56649e42d8d2133706cd8c9501e (patch) | |
tree | 85be449d772eb57860f0f386efb4bc1e790fd498 /media/pocketsphinx/src/fsg_history.c | |
parent | 15ac4021b06d549e47c9e2efc9364a9eb96bfe82 (diff) | |
download | UXP-99c2e698d2a3c56649e42d8d2133706cd8c9501e.tar UXP-99c2e698d2a3c56649e42d8d2133706cd8c9501e.tar.gz UXP-99c2e698d2a3c56649e42d8d2133706cd8c9501e.tar.lz UXP-99c2e698d2a3c56649e42d8d2133706cd8c9501e.tar.xz UXP-99c2e698d2a3c56649e42d8d2133706cd8c9501e.zip |
Issue #1538 - remove speech recognition engine
This removes speech recognition, pocketsphinx, training models
and the speech automated test interface.
This also re-establishes proper use of MOZ_WEBSPEECH to work
for the speech API (synthesis part only) that was a broken mess
before, with some synth parts being always built, some parts
being built only with it enabled and recognition parts being
dependent on it. I'm pretty sure it'd be totally busted if you'd
ever have tried building without MOZ_WEBPEECH before.
Tested that synthesis still works as-intended.
This resolves #1538
Diffstat (limited to 'media/pocketsphinx/src/fsg_history.c')
-rw-r--r-- | media/pocketsphinx/src/fsg_history.c | 317 |
1 files changed, 0 insertions, 317 deletions
diff --git a/media/pocketsphinx/src/fsg_history.c b/media/pocketsphinx/src/fsg_history.c deleted file mode 100644 index 25c6eb083..000000000 --- a/media/pocketsphinx/src/fsg_history.c +++ /dev/null @@ -1,317 +0,0 @@ -/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */ -/* ==================================================================== - * Copyright (c) 1999-2004 Carnegie Mellon University. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * - * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND - * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY - * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ==================================================================== - * - */ - -/* - * fsg_history.c -- FSG Viterbi decode history - * - * ********************************************** - * CMU ARPA Speech Project - * - * Copyright (c) 1999 Carnegie Mellon University. - * ALL RIGHTS RESERVED. - * ********************************************** - * - * HISTORY - * - * 25-Feb-2004 M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University - * Started.. - */ - -/* System headers. */ -#include <assert.h> - -/* SphinxBase headers. */ -#include <sphinxbase/prim_type.h> -#include <sphinxbase/err.h> -#include <sphinxbase/ckd_alloc.h> - -/* Local headers. */ -#include "fsg_search_internal.h" -#include "fsg_history.h" - - -#define __FSG_DBG__ 0 - - -fsg_history_t * -fsg_history_init(fsg_model_t * fsg, dict_t *dict) -{ - fsg_history_t *h; - - h = (fsg_history_t *) ckd_calloc(1, sizeof(fsg_history_t)); - h->fsg = fsg; - h->entries = blkarray_list_init(); - - if (fsg && dict) { - h->n_ciphone = bin_mdef_n_ciphone(dict->mdef); - h->frame_entries = - (glist_t **) ckd_calloc_2d(fsg_model_n_state(fsg), - bin_mdef_n_ciphone(dict->mdef), - sizeof(**h->frame_entries)); - } - else { - h->frame_entries = NULL; - } - - return h; -} - -void -fsg_history_free(fsg_history_t *h) -{ - int32 s, lc, ns, np; - gnode_t *gn; - - if (h->fsg) { - ns = fsg_model_n_state(h->fsg); - np = h->n_ciphone; - - for (s = 0; s < ns; s++) { - for (lc = 0; lc < np; lc++) { - for (gn = h->frame_entries[s][lc]; gn; gn = gnode_next(gn)) { - ckd_free(gnode_ptr(gn)); - } - glist_free(h->frame_entries[s][lc]); - } - } - } - ckd_free_2d(h->frame_entries); - blkarray_list_free(h->entries); - ckd_free(h); -} - - -void -fsg_history_set_fsg(fsg_history_t *h, fsg_model_t *fsg, dict_t *dict) -{ - if (blkarray_list_n_valid(h->entries) != 0) { - E_WARN("Switching FSG while history not empty; history cleared\n"); - blkarray_list_reset(h->entries); - } - - if (h->frame_entries) - ckd_free_2d((void **) h->frame_entries); - h->frame_entries = NULL; - h->fsg = fsg; - - if (fsg && dict) { - h->n_ciphone = bin_mdef_n_ciphone(dict->mdef); - h->frame_entries = - (glist_t **) ckd_calloc_2d(fsg_model_n_state(fsg), - bin_mdef_n_ciphone(dict->mdef), - sizeof(glist_t)); - } -} - - -void -fsg_history_entry_add(fsg_history_t * h, - fsg_link_t * link, - int32 frame, int32 score, int32 pred, - int32 lc, fsg_pnode_ctxt_t rc) -{ - fsg_hist_entry_t *entry, *new_entry; - int32 s; - gnode_t *gn, *prev_gn; - - /* Skip the optimization for the initial dummy entries; always enter them */ - if (frame < 0) { - new_entry = - (fsg_hist_entry_t *) ckd_calloc(1, sizeof(fsg_hist_entry_t)); - new_entry->fsglink = link; - new_entry->frame = frame; - new_entry->score = score; - new_entry->pred = pred; - new_entry->lc = lc; - new_entry->rc = rc; - - blkarray_list_append(h->entries, (void *) new_entry); - return; - } - - s = fsg_link_to_state(link); - - /* Locate where this entry should be inserted in frame_entries[s][lc] */ - prev_gn = NULL; - for (gn = h->frame_entries[s][lc]; gn; gn = gnode_next(gn)) { - entry = (fsg_hist_entry_t *) gnode_ptr(gn); - - if (score BETTER_THAN entry->score) - break; /* Found where to insert new entry */ - - /* Existing entry score not worse than new score */ - if (FSG_PNODE_CTXT_SUB(&rc, &(entry->rc)) == 0) - return; /* rc set reduced to 0; new entry can be ignored */ - - prev_gn = gn; - } - - /* Create new entry after prev_gn (if prev_gn is NULL, at head) */ - new_entry = - (fsg_hist_entry_t *) ckd_calloc(1, sizeof(fsg_hist_entry_t)); - new_entry->fsglink = link; - new_entry->frame = frame; - new_entry->score = score; - new_entry->pred = pred; - new_entry->lc = lc; - new_entry->rc = rc; /* Note: rc set must be non-empty at this point */ - - if (!prev_gn) { - h->frame_entries[s][lc] = glist_add_ptr(h->frame_entries[s][lc], - (void *) new_entry); - prev_gn = h->frame_entries[s][lc]; - } - else - prev_gn = glist_insert_ptr(prev_gn, (void *) new_entry); - - /* - * Update the rc set of all the remaining entries in the list. At this - * point, gn is the entry, if any, immediately following new entry. - */ - while (gn) { - entry = (fsg_hist_entry_t *) gnode_ptr(gn); - - if (FSG_PNODE_CTXT_SUB(&(entry->rc), &rc) == 0) { - /* rc set of entry reduced to 0; can prune this entry */ - ckd_free((void *) entry); - gn = gnode_free(gn, prev_gn); - } - else { - prev_gn = gn; - gn = gnode_next(gn); - } - } -} - - -/* - * Transfer the surviving history entries for this frame into the permanent - * history table. - */ -void -fsg_history_end_frame(fsg_history_t * h) -{ - int32 s, lc, ns, np; - gnode_t *gn; - fsg_hist_entry_t *entry; - - ns = fsg_model_n_state(h->fsg); - np = h->n_ciphone; - - for (s = 0; s < ns; s++) { - for (lc = 0; lc < np; lc++) { - for (gn = h->frame_entries[s][lc]; gn; gn = gnode_next(gn)) { - entry = (fsg_hist_entry_t *) gnode_ptr(gn); - blkarray_list_append(h->entries, (void *) entry); - } - - glist_free(h->frame_entries[s][lc]); - h->frame_entries[s][lc] = NULL; - } - } -} - - -fsg_hist_entry_t * -fsg_history_entry_get(fsg_history_t * h, int32 id) -{ - return ((fsg_hist_entry_t *) blkarray_list_get(h->entries, id)); -} - - -void -fsg_history_reset(fsg_history_t * h) -{ - blkarray_list_reset(h->entries); -} - - -int32 -fsg_history_n_entries(fsg_history_t * h) -{ - return (blkarray_list_n_valid(h->entries)); -} - -void -fsg_history_utt_start(fsg_history_t * h) -{ - int32 s, lc, ns, np; - - assert(blkarray_list_n_valid(h->entries) == 0); - assert(h->frame_entries); - - ns = fsg_model_n_state(h->fsg); - np = h->n_ciphone; - - for (s = 0; s < ns; s++) { - for (lc = 0; lc < np; lc++) { - assert(h->frame_entries[s][lc] == NULL); - } - } -} - -void -fsg_history_utt_end(fsg_history_t * h) -{ -} - -void -fsg_history_print(fsg_history_t *h, dict_t *dict) -{ - int bpidx, bp; - - for (bpidx = 0; bpidx < blkarray_list_n_valid(h->entries); bpidx++) { - bp = bpidx; - printf("History entry: "); - while (bp > 0) { - fsg_hist_entry_t *hist_entry = fsg_history_entry_get(h, bp); - fsg_link_t *fl = fsg_hist_entry_fsglink(hist_entry); - char const *baseword; - int32 wid; - bp = fsg_hist_entry_pred(hist_entry); - wid = fsg_link_wid(fl); - - if (fl == NULL) - continue; - - baseword = fsg_model_word_str(h->fsg, wid); - - printf("%s(%d->%d:%d) ", baseword, - fsg_link_from_state(hist_entry->fsglink), - fsg_link_to_state(hist_entry->fsglink), - hist_entry->frame); - } - printf("\n"); - } -} |