diff --git a/honoka/src/honoka_imengine.cpp b/honoka/src/honoka_imengine.cpp
index a8d8d2a..2c7da00 100644
--- a/honoka/src/honoka_imengine.cpp
+++ b/honoka/src/honoka_imengine.cpp
@@ -655,11 +655,11 @@
         if (k_commit.comp(key)) {
             if (auto_conversion) {
                 commit_string(m_convertor->getText());
-                if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText());
+                if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText(),m_preeditor->getText(true));
                 m_convertor->reset();
             } else {
                 commit_string(m_preeditor->getText(true));
-                if (m_predictor->isConnected()) m_predictor->update(m_preeditor->getText(true));
+                if (m_predictor->isConnected()) m_predictor->update(m_preeditor->getText(true),m_preeditor->getText(true));
             }
             m_preeditor->reset();
             while(preeditStack.size()) {
@@ -814,7 +814,7 @@
             preeditStack.pop();
         }
         m_convertor->updateFrequency();
-        if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText());
+        if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText(),m_preeditor->getText(true));
         m_preeditor->reset();
         m_convertor->reset();
         m_conversion = false;
@@ -974,7 +974,7 @@
         */
         commit_string(m_convertor->getText());
         m_convertor->updateFrequency();
-        if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText());
+        if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText(),m_preeditor->getText(true));
         m_preeditor->reset();
         m_convertor->reset();
         m_conversion = false;
@@ -1162,7 +1162,7 @@
     if (m_conversion) {
         commit_string(m_convertor->getText());
         m_convertor->updateFrequency();
-        if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText());
+        if (m_predictor->isConnected()) m_predictor->update(m_convertor->getText(),m_preeditor->getText(true));
         m_convertor->reset();
         if (m_def_convertor != m_convertor) m_convertor = m_def_convertor;
         m_conversion = false;
diff --git a/honoka/src/predictor.cpp b/honoka/src/predictor.cpp
index bf1b0d3..ad101b8 100644
--- a/honoka/src/predictor.cpp
+++ b/honoka/src/predictor.cpp
@@ -87,9 +87,9 @@
 
 
 /*!
-    \fn Predictor::update(const WideString str)
+    \fn Predictor::update(const WideString str,const WideString yomi)
  */
-void Predictor::update(const WideString str)
+void Predictor::update(const WideString str,const WideString yomi)
 {
     return;
 }
diff --git a/honoka/src/predictor.h b/honoka/src/predictor.h
index c221aea..c5c6ef8 100644
--- a/honoka/src/predictor.h
+++ b/honoka/src/predictor.h
@@ -52,7 +52,7 @@
     virtual bool isConnected();
     virtual String getPropertyName();
     virtual String getName();
-    virtual void update(const WideString str);
+    virtual void update(const WideString str,const WideString yomi);
 };
 
 #endif
diff --git a/honoka/src/wnnconversion.cpp b/honoka/src/wnnconversion.cpp
index bb5f000..3ec6909 100644
--- a/honoka/src/wnnconversion.cpp
+++ b/honoka/src/wnnconversion.cpp
@@ -517,18 +517,22 @@
 
 
 /*!
-    \fn WnnConversion::updateYosoku(WideString text)
+    \fn WnnConversion::updateYosoku(WideString text,const WideString yomi)
  */
-void WnnConversion::updateYosoku(WideString text)
+void WnnConversion::updateYosoku(WideString text,const WideString yomi)
 {
     #ifdef HAVE_LIBWNN7
     if (text == pretext) return;
+    reset();
+    setYomiText(yomi);
+    ren_conversion();
     w_char ws[1024];
     char c[2048];
     String y;
     m_iconv.convert(y,text);
     strtows(ws,(unsigned char*)y.c_str());
     jl_yosoku_toroku(wnn,ws,text.length());
+    reset();
     #endif
     return;
 
diff --git a/honoka/src/wnnconversion.h b/honoka/src/wnnconversion.h
index 671bd80..c80ecc6 100644
--- a/honoka/src/wnnconversion.h
+++ b/honoka/src/wnnconversion.h
@@ -75,7 +75,7 @@
     virtual int getCaretPos();
     virtual String getName();
     virtual String getPropertyName();
-    void updateYosoku(WideString text);
+    void updateYosoku(WideString text,const WideString yomi);
 
 
 protected:
diff --git a/honoka/src/wnnprediction.cpp b/honoka/src/wnnprediction.cpp
index 3368946..f0632ea 100644
--- a/honoka/src/wnnprediction.cpp
+++ b/honoka/src/wnnprediction.cpp
@@ -99,11 +99,11 @@
 }
 
 /*!
-    \fn WnnPrediction::update(const WideString str)
+    \fn WnnPrediction::update(const WideString str,const WideString yomi)
  */
-void WnnPrediction::update(const WideString str)
+void WnnPrediction::update(const WideString str,const WideString yomi)
 {
-    //convertor->updateYosoku(str);
+    convertor->updateYosoku(str,yomi);
     return;
 }
 
diff --git a/honoka/src/wnnprediction.h b/honoka/src/wnnprediction.h
index d161ba2..9b17f93 100644
--- a/honoka/src/wnnprediction.h
+++ b/honoka/src/wnnprediction.h
@@ -48,7 +48,7 @@
     virtual bool isConnected();
     virtual String getPropertyName();
     virtual String getName();
-    virtual void update(const WideString str);
+    virtual void update(const WideString str,const WideString yomi);
 
 protected:
     WnnConversion *convertor;