所以,我们确实有一个 TicWatch Pro 1182,型号 WF12069,Wear OS 2.17,系统版本 H。在那个手表上,我确实有一个应用程序正在使用,它可以大量使用谷歌 TTS 功能。直到几周前,我们不得不重新设置手表,以便它可以连接到另一部手机。
而现在,似乎无法再下载离线 tts 所需的 zvoice 包了。只要手表确实可以直接访问互联网,它至少可以使用非本地语音包从输入帮助菜单中说出示例。但是一旦没有可用的互联网,如果不这样做。
应用程序日志没有提示什么是错误的(tts 产生一个“onError”,但它使用了不推荐使用的 API,其中没有提供错误代码),但我注意到当使用 USB 连接手表时,我可以看到系统日志展开-充电器和 android studio 使用 logcat 打开。
下一步是停用“语音应用程序”(对不起,措辞不清楚,但我的系统是德语的,我手头没有原始的英文名称),删除它的文件(这也会清除它的缓存),重新启动手表,然后重新激活它,并打开 tts 的输入帮助菜单(语音合成,如其所称)并观察 logcat ......它告诉我这个
2020-09-08 08:23:59.712 9249-9249/? I/TTS: Loading library tts_android_neon
2020-09-08 08:24:00.935 9249-9249/? I/TTS: Cache cleared
2020-09-08 08:24:00.959 9249-9249/? I/TTS: Creating Google TTS service, version 3.15.18.200023596
2020-09-08 08:24:01.278 8190-8229/? D/DownloadManager: Scheduling download DownloadInfo:
mId=13 mLastMod=1599546241141 mPackage=com.google.android.tts mUid=10032
mUri=https://redirector.gvt1.com/edgedl/android/tts/v16/de-de-r2.zvoice
mMimeType=null mCookies=no mReferer=no mUserAgent=null
mFileName=null mDestination=4
mStatus=PENDING mCurrentBytes=0 mTotalBytes=-1
mNumFailed=0 mRetryAfter=0 mETag=null mIsPublicApi=true
mAllowedNetworkTypes=-1 mAllowRoaming=true mAllowMetered=false mFlags=0
2020-09-08 08:24:01.303 9249-9249/? I/TTS: Voice download for de-de-x-nfh-lstm-embedded dispatched
2020-09-08 08:24:01.321 750-750/? I/TextToSpeech: Connected to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
2020-09-08 08:24:01.418 9249-9262/? I/TTS: For default lang de-de is name de-DE-language (de-de-x-nfh-server)
2020-09-08 08:24:01.429 750-1724/? I/TextToSpeech: Set up connection to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
2020-09-08 08:24:01.430 750-750/? D/TtsServiceFragment: TTS engine for settings screen initialized.
2020-09-08 08:24:01.430 750-750/? D/TtsServiceFragment: Updating engine: Checking voice data: #Intent;action=android.speech.tts.engine.CHECK_TTS_DATA;package=com.google.android.tts;end
2020-09-08 08:24:01.435 558-6628/? I/ActivityManager: START u0 {act=android.speech.tts.engine.CHECK_TTS_DATA pkg=com.google.android.tts cmp=com.google.android.tts/.settings.CheckVoiceData} from uid 1000
2020-09-08 08:24:01.488 9249-9262/? I/TTS: For default lang de-de is name de-DE-language (de-de-x-nfh-server)
2020-09-08 08:24:01.760 9249-9261/? I/TTS: For default lang de-de is name de-DE-language (de-de-x-nfh-server)
2020-09-08 08:24:01.845 9249-9270/? I/TTS: de-de (1) has status 1, waiting for download
2020-09-08 08:24:01.845 9249-9270/? I/TTS: Skipping already active download: de-de
2020-09-08 08:24:01.845 9249-9270/? I/TTS: Voice download for de-de-x-nfh-lstm-embedded dispatched
2020-09-08 08:24:02.047 9249-9249/? I/TTS: Cache cleared
2020-09-08 08:24:02.186 750-750/? D/TtsServiceFragment: Voice integrity check: Intent { (has extras) }
2020-09-08 08:24:02.193 9249-9262/? I/TTS: For default lang de-de is name de-DE-language (de-de-x-nfh-server)
2020-09-08 08:24:02.221 9249-9270/? I/TTS: de-de (1) has status 1, waiting for download
2020-09-08 08:24:02.222 9249-9270/? I/TTS: Skipping already active download: de-de
2020-09-08 08:24:02.222 9249-9270/? I/TTS: Voice download for de-de-x-nfh-lstm-embedded dispatched
2020-09-08 08:24:02.975 750-750/? D/TtsServiceFragment: Getting sample text: #Intent;action=android.speech.tts.engine.GET_SAMPLE_TEXT;package=com.google.android.tts;S.language=de;S.variant=;S.country=DE;end
2020-09-08 08:24:02.979 558-932/? I/ActivityManager: START u0 {act=android.speech.tts.engine.GET_SAMPLE_TEXT pkg=com.google.android.tts cmp=com.google.android.tts/.settings.GetSampleText (has extras)} from uid 1000
2020-09-08 08:24:03.699 750-750/? D/TtsServiceFragment: Got sample text: Dies ist ein Beispiel für Sprachsynthese in Deutsch.
2020-09-08 08:24:05.671 750-750/? D/TtsServiceFragment: Speaking sample text
2020-09-08 08:24:06.036 9249-9270/? I/TTS: Synthesis request for locale deu-DEU and name de-DE-language
2020-09-08 08:24:06.080 9249-9270/? I/TTS: de-de (1) has status 1, waiting for download
2020-09-08 08:24:06.080 9249-9270/? I/TTS: Skipping already active download: de-de
2020-09-08 08:24:06.080 9249-9270/? I/TTS: Voice download for de-de-x-nfh-lstm-embedded dispatched
2020-09-08 08:24:06.080 9249-9270/? W/TTS: Local voice not installed, we use the network voice
2020-09-08 08:24:06.083 9249-9270/? I/TTS: TTS dispatch: de-de-x-nfh-server
2020-09-08 08:24:35.592 9249-9249/? I/TTS: Flushing cache
如您所见,它尝试下载该zvoice包...但似乎无法这样做,因为无论我等待多长时间,它都会重复“未安装本地语音,我们使用网络语音”的表达. 它声明的 URL 似乎是一个转发(curl 告诉我),但是在那个 zvoice 文件的末尾确实出现了......我无法在手表之外声明它的有效性。互联网是由 WLAN 热点提供的(是的,互联网确实可以工作)……证明可以使用网络语音。但是一旦互联网断开连接......沉默。
事实上,我确实有第二只手表(相同型号,相同操作系统版本),即使在重新连接重置后,tts 似乎也能正常工作。
EDiT:我至少有机会询问第二只手表的行为。据当前所有者通过电话告诉我,在选择一种新语言并第二次点击示例语音后,他的手表声称具有所需的包并告诉他该语音的 tts 是使用本地语音包。之后他的手表即使断网也能用中文说话。
我们确实为谷歌语音提供了相同的服务应用程序版本,但他的应用程序包含大约 30Mb 的数据和缓存,而我的应用程序几乎不包含 100kB ......我试图查看可能包含这些 kB 的文件夹,但是“adb shell”除了在根文件夹中闲逛外,不允许用户做任何事情。
所以,知道为什么那个特定的手表不能获得那个 zvoice 包。或者...我可以使用其他方式在手表中获取该 zvoice 包吗?