UNPKG

@novo-learning/novo-sdk

Version:

SDK for the Novolanguage Speech Analysis API

104 lines (92 loc) 2.43 kB
import { PhoneCorrectness, PhraseCorrectness, WordCorrectness } from './correctness'; import { PhoneDuration } from './exercises'; import { LanguageCode } from './language-code'; import { Prosody } from './prosody'; export class ExerciseResult { confidence?: Confidence; match?: boolean; // did the audio match the prompt? correct?: boolean; score?: Score; phrase?: string; recognized?: WordRecognition[]; phrases?: PhraseRecognition[]; // alignment?: AlignmentEntry[]; // Future work: determine which words have not been uttered / incorrectly uttered / inserted attempt?: { id?: string; audioKey?: string; }; speechDetected?: boolean; exerciseId?: string; respondedAt: Date; correctness?: PhraseCorrectness; language?: LanguageCode; } export class Confidence { llr: number; prob: number; } export class Score { accuracy?: number; fluency?: number; velocity?: number; } export class WordFeature { id: string; categoryId?: string; correct: boolean; letters?: { letter: string; part: boolean }[]; } export class WordRecognition { timing?: Timing; word: string; letterAlignment?: { letter: string; phones: string[]; correct: boolean; phoneAlignment?: AlignmentEntry[] }[]; wordFeatures?: WordFeature[]; promptToken?: string; correct?: boolean; correctness?: WordCorrectness; confidence?: Confidence; score?: Score; phones?: PhoneRecognition[]; liaisonPhone?: PhoneRecognition; closestCorrectPronunciation?: { phones: TargetPhone[] }; alignment?: AlignmentEntry[]; prosody?: Prosody; } export class PhraseRecognition { timing?: Timing; phrase: string; correct?: boolean; correctness?: PhraseCorrectness; words: WordRecognition[]; } export class Timing { begin: number; end: number; } export class PhoneRecognition { timing?: Timing; target?: TargetPhone; recognized: AsrRecognizedPhone; correct?: boolean; correctness?: PhoneCorrectness; } export class DurationProbabilities { [PhoneDuration.short]?: number; [PhoneDuration.normal]?: number; [PhoneDuration.long]?: number; [PhoneDuration.superlong]?: number; } export class AsrRecognizedPhone { phone: string; confidence?: Confidence; duration?: DurationProbabilities; } export class TargetPhone { phone: string; confidence?: Confidence; duration?: Array<PhoneDuration>; } export class AlignmentEntry { deleted?: string; inserted?: string; }