Blame view
tools/sctk-2.4.10/src/asclite/core/speech.h
3.08 KB
8dcb6dfcb first commit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
/* * ASCLITE * Author: Jerome Ajot, Jon Fiscus, Nicolas Radde, Chris Laprun * * This software was developed at the National Institute of Standards and Technology by * employees of the Federal Government in the course of their official duties. Pursuant * to title 17 Section 105 of the United States Code this software is not subject to * copyright protection and is in the public domain. ASCLITE is an experimental system. * NIST assumes no responsibility whatsoever for its use by other parties, and makes no * guarantees, expressed or implied, about its quality, reliability, or any other * characteristic. We would appreciate acknowledgement if the software is used. * * THIS SOFTWARE IS PROVIDED "AS IS." With regard to this software, NIST MAKES NO EXPRESS * OR IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING MERCHANTABILITY, * OR FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef SPEECH_H #define SPEECH_H #include "stdinc.h" #include "segment.h" #include "logger.h" class SpeechSet; /** * Internal representation of an hypothesis file or a reference file. */ class Speech { public: // class constructor Speech(SpeechSet* parentSet); Speech(const vector<Segment *>& segments); // class destructor virtual ~Speech(); /** * Retrieve the segment indexed by index. */ Segment* GetSegment(const size_t& index) { return m_segments[index]; } /** * Remove the segment from the list and link the previous tokens to the nexts. */ void RemoveSegment(Segment* currentSegment); /** * Add this segment at the end of the segment list. */ virtual void AddSegment(Segment* segment) { m_segments.push_back(segment); } /** * Return the number of Segments inside the Speech */ size_t NbOfSegments() { return m_segments.size(); } /** * Return the next Segment starting at the specified time for * the specified source and channel. If the time is in the middle of * A segment return the segment itself. */ Segment* NextSegment(const int& time, const string& source, const string& channel); /** * Return the segments of this speech by the given time */ vector<Segment*> GetSegmentsByTime(const int& start, const int& end, const string& source, const string& channel); /** Determines if case is taken into account to align Tokens part of this Speech. */ bool PerformCaseSensitiveAlignment(); /** Determines if fragments are considered as correct when aligning Tokens part of this Speech. */ bool AreFragmentsCorrect(); /** Determines if optionally deletable Tokens need to be accounted for. */ bool UseOptionallyDeletable(); /** Retrieves the SpeechSet in which this Speech is located */ SpeechSet* GetParentSpeechSet(); /** returns the Speech as a string */ string ToString(); int GetMinTokensTime(); int GetMaxTokensTime(); private: Speech(); /** * Represent all the segments of this speech. * Note : By definition they cannot overlap with each other */ vector<Segment*> m_segments; /** * The parent Set that contain the speech */ SpeechSet* parentSet; static Logger* m_pLogger; }; #endif // SPEECH_H |