summaryrefslogtreecommitdiffstats
path: root/media/pocketsphinx/src/fsg_history.c
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-05-20 10:19:04 +0000
committerMoonchild <moonchild@palemoon.org>2020-05-20 14:04:17 +0000
commit99c2e698d2a3c56649e42d8d2133706cd8c9501e (patch)
tree85be449d772eb57860f0f386efb4bc1e790fd498 /media/pocketsphinx/src/fsg_history.c
parent15ac4021b06d549e47c9e2efc9364a9eb96bfe82 (diff)
downloadUXP-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.c317
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");
- }
-}