summaryrefslogtreecommitdiff
path: root/kaldi_io/src/kaldi/tree/context-dep.h
diff options
context:
space:
mode:
Diffstat (limited to 'kaldi_io/src/kaldi/tree/context-dep.h')
-rw-r--r--kaldi_io/src/kaldi/tree/context-dep.h166
1 files changed, 0 insertions, 166 deletions
diff --git a/kaldi_io/src/kaldi/tree/context-dep.h b/kaldi_io/src/kaldi/tree/context-dep.h
deleted file mode 100644
index 307fcd4..0000000
--- a/kaldi_io/src/kaldi/tree/context-dep.h
+++ /dev/null
@@ -1,166 +0,0 @@
-// tree/context-dep.h
-
-// Copyright 2009-2011 Microsoft Corporation
-
-// See ../../COPYING for clarification regarding multiple authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-// WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-// MERCHANTABLITY OR NON-INFRINGEMENT.
-// See the Apache 2 License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef KALDI_TREE_CONTEXT_DEP_H_
-#define KALDI_TREE_CONTEXT_DEP_H_
-
-#include "itf/context-dep-itf.h"
-#include "tree/event-map.h"
-#include "matrix/matrix-lib.h"
-#include "tree/cluster-utils.h"
-
-/*
- This header provides the declarations for the class ContextDependency, which inherits
- from the interface class "ContextDependencyInterface" in itf/context-dep-itf.h.
- This is basically a wrapper around an EventMap. The EventMap
- (tree/event-map.h) declares most of the internals of the class, and the building routines are
- in build-tree.h which uses build-tree-utils.h, which uses cluster-utils.h . */
-
-
-namespace kaldi {
-
-static const EventKeyType kPdfClass = -1; // The "name" to which we assign the
-// pdf-class (generally corresponds ot position in the HMM, zero-based);
-// must not be used for any other event. I.e. the value corresponding to
-// this key is the pdf-class (see hmm-topology.h for explanation of what this is).
-
-
-/* ContextDependency is quite a generic decision tree.
-
- It does not actually do very much-- all the magic is in the EventMap object.
- All this class does is to encode the phone context as a sequence of events, and
- pass this to the EventMap object to turn into what it will interpret as a
- vector of pdfs.
-
- Different versions of the ContextDependency class that are written in the future may
- have slightly different interfaces and pass more stuff in as events, to the
- EventMap object.
-
- In order to separate the process of training decision trees from the process
- of actually using them, we do not put any training code into the ContextDependency class.
- */
-class ContextDependency: public ContextDependencyInterface {
- public:
- virtual int32 ContextWidth() const { return N_; }
- virtual int32 CentralPosition() const { return P_; }
-
-
- /// returns success or failure; outputs pdf to pdf_id
- virtual bool Compute(const std::vector<int32> &phoneseq,
- int32 pdf_class, int32 *pdf_id) const;
-
- virtual int32 NumPdfs() const {
- // this routine could be simplified to return to_pdf_->MaxResult()+1. we're a
- // bit more paranoid than that.
- if (!to_pdf_) return 0;
- EventAnswerType max_result = to_pdf_->MaxResult();
- if (max_result < 0 ) return 0;
- else return (int32) max_result+1;
- }
- virtual ContextDependencyInterface *Copy() const {
- return new ContextDependency(N_, P_, to_pdf_->Copy());
- }
-
- /// Read context-dependency object from disk; throws on error
- void Read (std::istream &is, bool binary);
-
- // Constructor with no arguments; will normally be called
- // prior to Read()
- ContextDependency(): N_(0), P_(0), to_pdf_(NULL) { }
-
- // Constructor takes ownership of pointers.
- ContextDependency(int32 N, int32 P,
- EventMap *to_pdf):
- N_(N), P_(P), to_pdf_(to_pdf) { }
- void Write (std::ostream &os, bool binary) const;
-
- ~ContextDependency() { if (to_pdf_ != NULL) delete to_pdf_; }
-
- const EventMap &ToPdfMap() const { return *to_pdf_; }
-
- /// GetPdfInfo returns a vector indexed by pdf-id, saying for each pdf which
- /// pairs of (phone, pdf-class) it can correspond to. (Usually just one).
- /// c.f. hmm/hmm-topology.h for meaning of pdf-class.
-
- void GetPdfInfo(const std::vector<int32> &phones, // list of phones
- const std::vector<int32> &num_pdf_classes, // indexed by phone,
- std::vector<std::vector<std::pair<int32, int32> > > *pdf_info)
- const;
-
- private:
- int32 N_; //
- int32 P_;
- EventMap *to_pdf_; // owned here.
-
- KALDI_DISALLOW_COPY_AND_ASSIGN(ContextDependency);
-};
-
-/// GenRandContextDependency is mainly of use for debugging. Phones must be sorted and uniq
-/// on input.
-/// @param phones [in] A vector of phone id's [must be sorted and uniq].
-/// @param ensure_all_covered [in] boolean argument; if true, GenRandContextDependency
-/// generates a context-dependency object that "works" for all phones [no gaps].
-/// @param num_pdf_classes [out] outputs a vector indexed by phone, of the number
-/// of pdf classes (e.g. states) for that phone.
-/// @return Returns the a context dependency object.
-ContextDependency *GenRandContextDependency(const std::vector<int32> &phones,
- bool ensure_all_covered,
- std::vector<int32> *num_pdf_classes);
-
-/// GenRandContextDependencyLarge is like GenRandContextDependency but generates a larger tree
-/// with specified N and P for use in "one-time" larger-scale tests.
-ContextDependency *GenRandContextDependencyLarge(const std::vector<int32> &phones,
- int N, int P,
- bool ensure_all_covered,
- std::vector<int32> *num_pdf_classes);
-
-// MonophoneContextDependency() returns a new ContextDependency object that
-// corresponds to a monophone system.
-// The map phone2num_pdf_classes maps from the phone id to the number of
-// pdf-classes we have for that phone (e.g. 3, so the pdf-classes would be
-// 0, 1, 2).
-
-ContextDependency*
-MonophoneContextDependency(const std::vector<int32> phones,
- const std::vector<int32> phone2num_pdf_classes);
-
-// MonophoneContextDependencyShared is as MonophoneContextDependency but lets
-// you define classes of phones which share pdfs (e.g. different stress-markers of a single
-// phone.) Each element of phone_classes is a set of phones that are in that class.
-ContextDependency*
-MonophoneContextDependencyShared(const std::vector<std::vector<int32> > phone_classes,
- const std::vector<int32> phone2num_pdf_classes);
-
-
-// Important note:
-// Statistics for training decision trees will be of type:
-// std::vector<std::pair<EventType, Clusterable*> >
-// We don't make this a typedef as it doesn't add clarity.
-// they will be sorted and unique on the EventType member, which
-// itself is sorted and unique on the name (see event-map.h).
-
-// See build-tree.h for functions relating to actually building the decision trees.
-
-
-
-
-} // namespace Kaldi
-
-
-#endif