//-------------私有方法------------------------ /* * 生成比较结果的进程 */ private void processMarching() { List <TaskTransform> listTasks = TaskManager.Instance.GetTasks(); List <AudioPart> listAudioParts = AudioEditManagercs.Instance.GetAudioPartsList(); /* * 生成第一次比较结果 */ TaskTransform t = null; AudioPart a = null; TaskResult tr = null; float matchRateThanTask = 0; float matchRateThanAudioPart = 0; float LOWER_MAIN_BODY_MARCH_RATE = 0.5f; int startMarchIndex = 0; int stopMarchIndex = 0; for (int i = 0; i < listTasks.Count; ++i) { t = listTasks[i]; t.ListTaskResult.Clear(); for (int z = 0; z < listAudioParts.Count; ++z) { a = listAudioParts[z]; matchRateThanTask = ArrayUtil <string> .CaculateRegularSimilar(t.arrStrPingYing, a.textPingYinArr); //StringUtil.CaculateStringSimilar(t.StrTaskWord, a.strText);// 解决复杂度 matchRateThanAudioPart = ArrayUtil <string> .CaculateRegularSimilar(a.textPingYinArr, t.arrStrPingYing); //StringUtil.CaculateStringSimilar(a.strText, t.StrTaskWord); if (matchRateThanTask >= LOWER_MAIN_BODY_MARCH_RATE) { tr = new TaskResult(); tr.MarchRate = (matchRateThanTask + matchRateThanAudioPart) / 2.0f; tr.ListAudioParts.Add(a); t.ListTaskResult.Add(tr); if (matchRateThanAudioPart > matchRateThanTask) { tr = new TaskResult(); tr.MarchRate = (matchRateThanTask + matchRateThanAudioPart) / 2.0f - 0.1f; int index = AudioEditManagercs.Instance.GetIndexByAudioPart(a); if (index != -1) { for (int x = 0; x < 3; x++) { AudioPart apNow = AudioEditManagercs.Instance.GetAudioPartByIndex(index - 1 + x); tr.ListAudioParts.Add(apNow); } t.ListTaskResult.Add(tr); } } } } } TaskManager.Instance.SaveTasksConfig(); }
public int GetIndexByAudioPart(AudioPart ap) { for (int i = 0; i < listAudioParts_.Count; ++i) { if (ap == listAudioParts_[i]) { return(i); } } return(-1); }
void cutAudioByDotOneTime(Byte[] audio, long startDotOneTime, long EndDotOneTime, List <AudioPart> audioListPart) { long startIndex = startDotOneTime * SAMPLE_RATE / 10 * 2; long endIndex = EndDotOneTime * SAMPLE_RATE / 10 * 2; byte[] newAudio = new byte[endIndex - startIndex]; long index = 0; for (long i = startIndex; i <= endIndex; ++i) { if (index < newAudio.Length) { newAudio[index] = audio[i]; } index++; } /* * 写入为音频文件到本地 */ string savePath = strOutPutPath_ + "\\" + FLODER_NAME_FIRST_CUT + "\\" + AudioIndex + ".pc"; Debug.Log("savePath" + savePath); FileStream fs = new FileStream(savePath, FileMode.Create); fs.Write(newAudio, 0, newAudio.Length); fs.Close(); AudioIndex++; AudioPart p = new AudioPart(); p.audioPath = savePath; p.startIndex = startIndex; p.endIndex = endIndex; audioListPart.Add(p); }
private void transformAudioPartToWord(AudioPart audioPart) { var data = File.ReadAllBytes(audioPart.audioPath); BaiduManager.Instance.BytesToWord(data, audioPart.transformCb); }