Untitled

 avatar
unknown
c_cpp
2 years ago
3.8 kB
7
Indexable
#include <iostream>
#include <vector>
#include <string>
#include "json.hpp"

using json = nlohmann::json;

class PronunciationAssessment
{
public:
    double AccuracyScore{};
    double FluencyScore{};
    double CompletenessScore{};
    double PronScore{};
    std::string ErrorType;
};

class Syllable
{
public:
    std::string Syllable;
    PronunciationAssessment Pronunciation;
    int Offset{};
    int Duration{};
};

class Phoneme
{
public:
    std::string Phoneme;
    PronunciationAssessment Pronunciation;
    int Offset{};
    int Duration{};
};

class Word
{
public:
    std::string Word;
    int Offset{};
    int Duration{};
    PronunciationAssessment Pronunciation;
    std::vector<Syllable> Syllables;
    std::vector<Phoneme> Phonemes;
};

class NBest
{
public:
    double Confidence{};
    std::string Lexical;
    std::string ITN;
    std::string MaskedITN;
    std::string Display;
    PronunciationAssessment pronunciationAssessment;
    std::vector<Word> Words;
};

class TranscriptionResult
{
public:
    std::string Id;
    std::string RecognitionStatus;
    int Offset;
    int Duration;
    int Channel;
    std::string DisplayText;
    double SNR;
    std::vector<NBest> nBest;

    explicit TranscriptionResult(const std::string &jsonStr)
    {
        json j = json::parse(jsonStr);
        Id = j["Id"];
        RecognitionStatus = j["RecognitionStatus"];
        Offset = j["Offset"];
        Duration = j["Duration"];
        Channel = j["Channel"];
        DisplayText = j["DisplayText"];
        SNR = j["SNR"];
        for (auto &nb : j["NBest"])
        {
          class  NBest nbest;
            nbest.Confidence = nb["Confidence"];
            nbest.Lexical = nb["Lexical"];
            nbest.ITN = nb["ITN"];
            nbest.MaskedITN = nb["MaskedITN"];
            nbest.Display = nb["Display"];
            for (auto &pa : nb["PronunciationAssessment"])
            {
                nbest.pronunciationAssessment.AccuracyScore = pa["AccuracyScore"];
                nbest.pronunciationAssessment.FluencyScore = pa["FluencyScore"];
                nbest.pronunciationAssessment.CompletenessScore = pa["CompletenessScore"];
                nbest.pronunciationAssessment.PronScore = pa["PronScore"];
            }
            for (auto &word : nb["Words"])
            {
                Word w;
                w.Word = word["Word"];
                w.Offset = word["Offset"];
                w.Duration = word["Duration"];
                for (auto &pa : word["PronunciationAssessment"])
                {
                    w.Pronunciation.AccuracyScore = pa["AccuracyScore"];
                    w.Pronunciation.ErrorType = pa["ErrorType"];
                }
                for (auto &syl : word["Syllables"])
                {
                    Syllable s;
                    s.Syllable = syl["Syllable"];
                    s.Offset = syl["Offset"];
                    s.Duration = syl["Duration"];
                    for (auto &pa : syl["PronunciationAssessment"])
                    {
                        s.Pronunciation.AccuracyScore = pa["AccuracyScore"];
                    }
                    w.Syllables.push_back(s);
                }
                for (auto &phon : word["Phonemes"])
                {
                    Phoneme p;
                    p.Phoneme = phon["Phoneme"];
                    p.Offset = phon["Offset"];
                    p.Duration = phon["Duration"];
                    for (auto &pa : phon["PronunciationAssessment"])
                    {
                        p.Pronunciation.AccuracyScore = pa["AccuracyScore"];
                    }
                    w.Phonemes.push_back(p);
                }
                nbest.Words.push_back(w);
            }
            nBest.push_back(nbest);
        }
    };
};
Editor is loading...