diff --git a/src/gstkaldinnet2onlinedecoder.cc b/src/gstkaldinnet2onlinedecoder.cc
index 6c8749e61eca906d47cb800e99d8463d8a59c7cd..0fd8e81fe5b7c5183ae16d7d2fc85fc0dd08654e 100644
--- a/src/gstkaldinnet2onlinedecoder.cc
+++ b/src/gstkaldinnet2onlinedecoder.cc
@@ -71,12 +71,14 @@ enum {
   PROP_DO_ENDPOINTING,
   PROP_ADAPTATION_STATE,
   PROP_INVERSE_SCALE,
+  PROP_LMWT_SCALE,
   PROP_LAST
 };
 
 #define DEFAULT_MODEL           "final.mdl"
 #define DEFAULT_FST             "HCLG.fst"
 #define DEFAULT_WORD_SYMS       "words.txt"
+#define DEFAULT_LMWT_SCALE	1.0
 
 /* the capabilities of the inputs and outputs.
  *
@@ -195,6 +197,17 @@ static void gst_kaldinnet2onlinedecoder_class_init(
           FALSE,
           (GParamFlags) G_PARAM_READWRITE));
 
+  g_object_class_install_property(
+      gobject_class,
+      PROP_LMWT_SCALE,
+      g_param_spec_float(
+          "lmwt-scale", "LM weight for scaling output lattice",
+          "LM scaling for the output lattice, usually in conjunction with inverse-scaling=true",
+          G_MINFLOAT,
+          G_MAXFLOAT,
+          DEFAULT_LMWT_SCALE,
+          (GParamFlags) G_PARAM_READWRITE));
+
   gst_kaldinnet2onlinedecoder_signals[PARTIAL_RESULT_SIGNAL] = g_signal_new(
       "partial-result", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
       G_STRUCT_OFFSET(Gstkaldinnet2onlinedecoderClass, partial_result),
@@ -270,6 +283,7 @@ static void gst_kaldinnet2onlinedecoder_init(
   filter->feature_info = NULL;
   filter->sample_rate = 0;
   filter->decoding = false;
+  filter->lmwt_scale = DEFAULT_LMWT_SCALE;
   filter->inverse_scale = FALSE;
 
   // init properties from various Kaldi Opts
@@ -380,6 +394,9 @@ static void gst_kaldinnet2onlinedecoder_set_property(GObject * object,
     case PROP_INVERSE_SCALE:
       filter->inverse_scale = g_value_get_boolean(value);
       break;
+    case PROP_LMWT_SCALE:
+      filter->lmwt_scale = g_value_get_float(value);
+      break;
     case PROP_ADAPTATION_STATE:
       {
         if (G_VALUE_HOLDS_STRING(value)) {
@@ -480,6 +497,9 @@ static void gst_kaldinnet2onlinedecoder_get_property(GObject * object,
     case PROP_INVERSE_SCALE:
       g_value_set_boolean(value, filter->inverse_scale);
       break;
+    case PROP_LMWT_SCALE:
+      g_value_set_float(value, filter->lmwt_scale);
+      break;
     case PROP_ADAPTATION_STATE:
       string_stream.clear();
       if (filter->adaptation_state) {
@@ -544,6 +564,8 @@ static void gst_kaldinnet2onlinedecoder_final_result(
     fst::ScaleLattice(fst::AcousticLatticeScale(inv_acoustic_scale), &clat);
   }
 
+  fst::ScaleLattice(fst::LatticeScale(filter->lmwt_scale, 1.0), &clat);
+
   CompactLatticeShortestPath(clat, &best_path_clat);
 
   Lattice best_path_lat;
diff --git a/src/gstkaldinnet2onlinedecoder.h b/src/gstkaldinnet2onlinedecoder.h
index a1bb9d2a0294354df193f016945d888bf5f4cfd2..3adf837f2b6bc7b16953b9dd866b7c40476cd98d 100644
--- a/src/gstkaldinnet2onlinedecoder.h
+++ b/src/gstkaldinnet2onlinedecoder.h
@@ -61,6 +61,7 @@ struct _Gstkaldinnet2onlinedecoder {
   gboolean silent;
   gboolean do_endpointing;
   gboolean inverse_scale;
+  float lmwt_scale;
   GstBufferSource *audio_source;
 
   gchar* model_rspecifier;