private string MakeTalkToString(string sourceStr, bool bNextFurigana) { // 会話か否か string strDest; try { // prevTime = ModuleReuseClass.GetVoiceTime(sourceStr); strDest = sourceStr + "\r\n"; // よみがなの追加 if (!bNextFurigana) { var strYomigana = ModuleReuseClass.OutputYomigana(sourceStr); if (!string.IsNullOrEmpty(strYomigana)) { strDest += ":" + strYomigana + "\r\n"; } else { strYomigana = ModuleReuseClass.GetNMeCabToFurigana(sourceStr); if (!string.IsNullOrEmpty(strYomigana)) { strDest += ":" + strYomigana + "\r\n"; } } } } catch { strDest = ""; } return(strDest); }
public static string GetNMeCabToFurigana(string strInput) { string str = string.Empty, strYomi; try { MeCabParam mcp = new MeCabParam(); MeCabTagger mct = MeCabTagger.Create(); MeCabNode mcn = mct.ParseToNode(strInput); MecabResult mcr = new MecabResult(mcn); foreach (MecabResult.MecabResultItem mcri in mcr.nodes) { strYomi = String.Empty; if (String.Compare(mcri.読み, "*") == 0) { // 形態素解析を持ってしても読めない場合、OutputYomiganaを使用する。 strYomi = ModuleReuseClass.OutputYomigana(mcri.表層形); } else { strYomi = mcri.読み; } str += strYomi; } //カタカナをひらがなに変換する str = Strings.StrConv(str, VbStrConv.Hiragana, 0x411); //あいうえおかきくけこサシスセソnaninuneno } catch (Exception ex) { MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); } return(str); }