Android文字转语音API听起来机器人
作者:互联网
我是第一次学习android开发,我的目标是创建一个简单的Hello World应用程序,它接收一些文本,并大声读出它们.
我的代码基于我找到的一个例子,这是我的代码:
class MainFeeds : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_feeds)
card.setOnClickListener{
Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show()
TTS(this, "Hello this is leo")
}
}
}
class TTS(private val activity: Activity,
private val message: String) : TextToSpeech.OnInitListener {
private val tts: TextToSpeech = TextToSpeech(activity, this, "com.google.android.tts")
override fun onInit(i: Int) {
if (i == TextToSpeech.SUCCESS) {
val localeUS = Locale.US
val result: Int
result = tts.setLanguage(localeUS)
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Toast.makeText(activity, "This Language is not supported", Toast.LENGTH_SHORT).show()
} else {
speakOut(message)
}
} else {
Toast.makeText(activity, "Initilization Failed!", Toast.LENGTH_SHORT).show()
}
}
private fun speakOut(message: String) {
tts.speak(message, TextToSpeech.QUEUE_FLUSH, null, null)
}
}
它运行得非常好,我遇到的问题是合成器发出的音频听起来非常机器人,几乎就像我使用谷歌地图时我从互联网断开连接.使用语音Google智能助理会利用我必须启用的其他一些API吗?
编辑:我已经尝试在我的像素2xl上运行应用程序,它仍然听起来像机器人,因为它没有使用谷歌助理语音.
解决方法:
语音质量首先归结为您创建的TextToSpeech对象使用的“语音引擎”:
private val tts: TextToSpeech = TextToSpeech(activity, this)
如果您输入了:
private val tts: TextToSpeech = TextToSpeech(activity, this, "com.google.android.tts")
然后,您运行该代码的任何设备都将尝试使用Google语音引擎…但只有在设备上存在时才会实际使用它.
同样,使用“com.samsung.SMT”将尝试使用三星语音引擎(它也是高质量的,但通常只安装在三星[真实]设备上).
Google语音引擎是否可用并不是很依赖于设备的Android API级别(只要它最近足以运行Google引擎),而是实际的Google文本到语音引擎完全安装在设备上.
要确保安装了Google引擎:
在Android Studio模拟器上:
创建新的模拟器,然后在“目标”列中选择具有“Google API”或“Google Play”的系统映像.
在真实的设备上:
转到Play商店并安装Google speech engine.
我正在编写一个“TTS诊断”应用程序,我将在Github准备好后发布.我已经了解到Android上的TTS(或至少试图预测其行为)可能是一个真正的野兽.
标签:android,text-to-speech,google-text-to-speech,speech-synthesis,voice 来源: https://codeday.me/bug/20190930/1836272.html