Exemple #1
0
        private static bool InitAsr(ILegacyLogger i_Logger, eAsrType i_eAsrType, out IASR o_Asr)
        {
            bool bRet = true;

            o_Asr = null;
            try
            {
                switch (i_eAsrType)
                {
                case eAsrType.lumenvox:
//						bRet = Init_Lumenvox(i_Logger, out o_Asr);
                    break;

                case eAsrType.lumenvox2:
//						bRet = Init_Lumenvox2(i_Logger, out o_Asr);
                    break;

                case eAsrType.vestec:
                    i_Logger.Log(Level.Exception, "InitAsr: That ASR is not yet implemented");
                    break;

                default:
                    i_Logger.Log(Level.Exception, "InitAsr: That ASR is not yet implemented");
                    break;
                }
            }
            catch (Exception exc)
            {
                bRet = false;
                i_Logger.Log(Level.Exception, "InitAsr caught exception: " + exc.ToString());
            }

            return(bRet);
        }
Exemple #2
0
        }         // RunTestBuffer

        /// <summary>
        ///
        /// </summary>
        /// <param name="i_Asr"></param>
        /// <param name="i_abData"></param>
        /// <param name="bStream"></param>
        /// <returns></returns>
        private static bool SendData(IASR i_Asr, byte[] i_abData, bool bStream = true)
        {
            bool bRet = true;

            if (bStream)
            {
                i_Asr.UtteranceStart();
                UtteranceData(i_Asr, i_abData);
                bRet = i_Asr.UtteranceStop();
            }
            else
            {
                bRet = i_Asr.AddUtterance(i_abData);
            }

            return(bRet);
        }
Exemple #3
0
        private static bool UtteranceData(IASR i_Asr, byte[] i_abData)
        {
            bool bRet       = true;
            int  iChunkSize = 160;                                      // See ISDevice NETWORK_RTP_RATE

            byte[] abSubData = new byte[iChunkSize];
            int    ii = 0, iNumChunks = 0;

            iNumChunks = i_abData.Length / iChunkSize;

            // FIX - This will drop the remainder, but we probably don't care in a test scenario
            for (ii = 0; ii < iNumChunks; ii++)
            {
                Array.Copy(i_abData, ii * iChunkSize, abSubData, 0, iChunkSize);
                i_Asr.UtteranceData(abSubData);
            }

            return(bRet);
        }
Exemple #4
0
        private static void SetUpASR()
        {
            bool cont = true;

            if (CrossDeviceInfo.Current.Platform == Plugin.DeviceInfo.Abstractions.Platform.iOS)
            {
                var version = new Version(CrossDeviceInfo.Current.Version);
                var v11     = new Version("11.0");
                var vres    = version.CompareTo(v11);

                if (vres > 0)
                {
                    cont = true;
                }
                else
                {
                    cont = false;
                }
            }
            if (cont)
            {
                string[] phrases = new string[]
                { "ZERO", "O", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", };

                asr     = _container.Resolve <IASR>();
                fResult = asr.initialize("librispeech-nnet2-en-us");
                fResult = asr.createDecodingGraph("numbers", phrases);
                fResult = asr.prepareForListening("numbers");

                asr.SetCreateAudioRecordings(true);

                // set float values to the desired timeout
                asr.SetVADParameter(0, 600f);
                asr.SetVADParameter(1, 600f);
                asr.SetVADParameter(2, 600f);
                asr.SetVADParameter(3, 600f);
            }
        }
Exemple #5
0
        private static int RunTestBuffer(ILegacyLogger i_Logger, eAsrType i_eAsrType, string i_sGramPath, string i_sUttPath, int i_iNumIt, int i_iPause)
        {
            StreamReader srGram = null;
            FileInfo     fiUtt  = null;
            FileStream   fsUtt  = null;

            byte[]        abUtt = null;
            StringBuilder sbGram = null;
            string        sTmp = "", sGram = "";
            int           ii = 0, iRead = 0, iLen = 0, iRem = 0, jj = 0;
            bool          bRes = true;
            IASR          oAsr = null;

            RecognitionResult[] aResults = null;

            try
            {
                // Load grammar file and utterance WAV into buffers
                sbGram = new StringBuilder();
                srGram = new StreamReader(i_sGramPath, Encoding.UTF8);
                while ((sTmp = srGram.ReadLine()) != null)
                {
                    sbGram.Append(sTmp + System.Environment.NewLine);
                }
                sGram = sbGram.ToString();

                i_Logger.Log(Level.Info, "Grammar:  " + sGram + "");

                fiUtt = new FileInfo(i_sUttPath);
                fsUtt = fiUtt.OpenRead();
                abUtt = new byte[fsUtt.Length];
                iLen  = iRem = (int)fsUtt.Length;
                do
                {
                    iRead = fsUtt.Read(abUtt, 0, iRem);
                    iRem -= iRead;
                } while (iRem > 0);

                // Do ASR init
                bRes = InitAsr(i_Logger, i_eAsrType, out oAsr);
                if (!bRes)
                {
                    i_Logger.Log(Level.Exception, "InitAsr failed.");
                }
                else
                {
                    // Run test
                    for (ii = 0; ii < i_iNumIt; ii++)
                    {
                        bRes = oAsr.Open();
                        if (!bRes)
                        {
                            i_Logger.Log(Level.Exception, "Asr.Open failed.");
                        }
                        bRes = oAsr.ResetGrammar();
                        if (!bRes)
                        {
                            i_Logger.Log(Level.Exception, "Asr.ResetGrammar failed.");
                        }
                        bRes = oAsr.LoadGrammar(false, "main", sGram);
                        if (!bRes)
                        {
                            i_Logger.Log(Level.Exception, "Asr.LoadGrammar failed.");
                            bRes = oAsr.Close();
                            return(ii);
                        }

                        SendData(oAsr, abUtt, true);                            // Use streaming
//						SendData(oAsr, abUtt, false);	// Doesn't stream

                        bRes = oAsr.Results(out aResults);
                        if (!bRes)
                        {
                            i_Logger.Log(Level.Exception, "Asr.Results failed.");
                        }
                        else
                        {
                            for (jj = 0; jj < aResults.Length; jj++)
                            {
                                i_Logger.Log(Level.Info, "Iteration #" + ii.ToString() + ", result #" + jj.ToString() + ", decoded '" + aResults[jj].Result + "' with confidence " + aResults[jj].Probability + "%.");
                            }
                        }

                        // Pause between iterations
                        if ((i_iNumIt > 0) && (i_iPause > 0))
                        {
                            Thread.Sleep(i_iPause * 1000);
                        }
                    }                     // for
                }
            }
            catch (Exception exc)
            {
                i_Logger.Log(Level.Exception, "RunTestBuffer Iteration #" + ii + ", caught exception: " + exc.ToString());
            }

            return(ii);
        }         // RunTestBuffer