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); }
} // 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); }
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); }
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); } }
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