diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 61129a7..6540b6f 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -70,6 +70,7 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.AsyncTaskExecutor;
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
@@ -907,7 +908,7 @@
     final int transcriptionState =
         (VERSION.SDK_INT >= VERSION_CODES.O)
             ? cursor.getInt(CallLogQuery.TRANSCRIPTION_STATE)
-            : PhoneCallDetailsHelper.TRANSCRIPTION_NOT_STARTED;
+            : VoicemailCompat.TRANSCRIPTION_NOT_STARTED;
     final PhoneCallDetails details =
         new PhoneCallDetails(number, numberPresentation, postDialDigits);
     details.viaNumber = viaNumber;
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index c1a00e5..a6e8f10 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -31,6 +31,7 @@
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.calllogcache.CallLogCache;
 import com.android.dialer.calllogutils.PhoneCallDetails;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
@@ -45,13 +46,6 @@
   /** The maximum number of icons will be shown to represent the call types in a group. */
   private static final int MAX_CALL_TYPE_ICONS = 3;
 
-  // TODO(mdooley): remove when these api's become public
-  // Copied from android.provider.VoicemailContract
-  static final int TRANSCRIPTION_NOT_STARTED = 0;
-  static final int TRANSCRIPTION_IN_PROGRESS = 1;
-  static final int TRANSCRIPTION_FAILED = 2;
-  static final int TRANSCRIPTION_AVAILABLE = 3;
-
   private final Context mContext;
   private final Resources mResources;
   private final CallLogCache mCallLogCache;
@@ -159,12 +153,13 @@
         // Set the branding text if the voicemail was transcribed by google
         // TODO(mdooley): the transcription state is only set by the google transcription code,
         // but a better solution would be to check the SOURCE_PACKAGE
-        showTranscriptBranding = details.transcriptionState == TRANSCRIPTION_AVAILABLE;
+        showTranscriptBranding =
+            details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE;
       } else {
-        if (details.transcriptionState == TRANSCRIPTION_IN_PROGRESS) {
+        if (details.transcriptionState == VoicemailCompat.TRANSCRIPTION_IN_PROGRESS) {
           views.voicemailTranscriptionView.setText(
               mResources.getString(R.string.voicemail_transcription_in_progress));
-        } else if (details.transcriptionState == TRANSCRIPTION_FAILED) {
+        } else if (details.transcriptionState == VoicemailCompat.TRANSCRIPTION_FAILED) {
           views.voicemailTranscriptionView.setText(
               mResources.getString(R.string.voicemail_transcription_failed));
         }
diff --git a/java/com/android/voicemail/impl/transcribe/VoicemailCompat.java b/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
similarity index 73%
rename from java/com/android/voicemail/impl/transcribe/VoicemailCompat.java
rename to java/com/android/dialer/compat/android/provider/VoicemailCompat.java
index c6e30c6..175ea5d 100644
--- a/java/com/android/voicemail/impl/transcribe/VoicemailCompat.java
+++ b/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License
  */
-package com.android.voicemail.impl.transcribe;
+package com.android.dialer.compat.android.provider;
 
 /**
  * Provide access to new API constants before they're publicly available
@@ -47,7 +47,7 @@
 
   /**
    * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
-   * failed.
+   * failed for an unspecified reason.
    */
   public static final int TRANSCRIPTION_FAILED = 2;
 
@@ -56,4 +56,20 @@
    * result has been stored in the {@link #TRANSCRIPTION} column.
    */
   public static final int TRANSCRIPTION_AVAILABLE = 3;
+
+  /**
+   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
+   * failed because no speech was detected.
+   *
+   * <p>Internal dialer use only, not part of the public SDK.
+   */
+  public static final int TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED = -1;
+
+  /**
+   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
+   * failed because the language was not supported.
+   *
+   * <p>Internal dialer use only, not part of the public SDK.
+   */
+  public static final int TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED = -2;
 }
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java b/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
index 9d3c2e4..a9a3722 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
@@ -30,6 +30,7 @@
 import android.util.Pair;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionTask.java b/java/com/android/voicemail/impl/transcribe/TranscriptionTask.java
index b5f29da..fbab076 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionTask.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionTask.java
@@ -22,6 +22,7 @@
 import android.text.TextUtils;
 import android.util.Pair;
 import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.voicemail.impl.VvmLog;
@@ -124,24 +125,29 @@
     } else {
       VvmLog.i(TAG, "transcribeVoicemail, transcription unsuccessful, " + status);
       switch (status) {
+        case FAILED_NO_SPEECH_DETECTED:
+          updateTranscriptionAndState(
+              transcript, VoicemailCompat.TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED);
+          Logger.get(context)
+              .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_NO_SPEECH_DETECTED);
+          break;
         case FAILED_LANGUAGE_NOT_SUPPORTED:
+          updateTranscriptionAndState(
+              transcript, VoicemailCompat.TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED);
           Logger.get(context)
               .logImpression(
                   DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_LANGUAGE_NOT_SUPPORTED);
           break;
-        case FAILED_NO_SPEECH_DETECTED:
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_NO_SPEECH_DETECTED);
-          break;
         case EXPIRED:
+          updateTranscriptionAndState(transcript, VoicemailCompat.TRANSCRIPTION_FAILED);
           Logger.get(context)
               .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_EXPIRED);
           break;
         default:
+          updateTranscriptionAndState(transcript, VoicemailCompat.TRANSCRIPTION_FAILED);
           Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_EMPTY);
           break;
       }
-      updateTranscriptionAndState(transcript, VoicemailCompat.TRANSCRIPTION_FAILED);
     }
   }
 
