ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Android TTS文本转语音TextToSpeech
[打印本页]
作者:
农妇山泉一亩田
时间:
昨天 11:28
标题:
Android TTS文本转语音TextToSpeech
Android 提供了 TextToSpeech(TTS)API,允许开发者将文本转换为语音。以下是对 Android TTS 文本转语音功能的详细先容,包罗基本用法、配置、事件处置惩罚和一些高级功能。
基本用法
添加权限
: 在 AndroidManifest.xml 文件中添加网络权限(假如需要在线合成服务):
<uses-permission android:name="android.permission.INTERNET"/>
复制代码
初始化 TextToSpeech
: 创建一个 TextToSpeech 对象并在 OnInitListener 中处置惩罚初始化结果。
import android.content.Context;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
public class TtsUtil implements TextToSpeech.OnInitListener {
private static final String TAG = "TtsUtil";
private TextToSpeech tts;
private boolean initialized = false;
public void init(Context context) {
tts = new TextToSpeech(context, this);
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e(TAG, "This Language is not supported");
} else {
initialized = true;
Log.i(TAG, "Initialization successful");
}
} else {
Log.e(TAG, "Initialization Failed!");
}
}
public void shutdown() {
if (tts != null) {
tts.stop();
tts.shutdown();
tts = null;
initialized = false;
Log.i(TAG, "TTS shut down successfully");
}
}
public void speak(String text) {
if (initialized && tts != null) {
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, null);
} else {
Log.w(TAG, "TTS is not initialized yet.");
}
}
}
复制代码
使用 TtsUtil 类
: 在 Activity 中使用 TtsUtil 类举行文本转语音。
package com.hellom.trp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.hellom.trp.utils.TtsUtil;
public class MainActivity extends AppCompatActivity {
private TtsUtil ttsUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ttsUtil = new TtsUtil();
ttsUtil.init(this);
Button playButton = findViewById(R.id.playButton);
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ttsUtil.speak("Hello, World!");
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
ttsUtil.shutdown();
}
}
复制代码
配置
设置语言
:
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e(TAG, "This Language is not supported");
} else {
initialized = true;
Log.i(TAG, "Initialization successful");
}
复制代码
设置音调和速率
:
tts.setPitch(1.0f); // Default pitch is 1.0
tts.setSpeechRate(1.0f); // Default speech rate is 1.0
复制代码
事件处置惩罚
播放完成回调
: 实现 OnUtteranceCompletedListener 接口来处置惩罚播放完成事件。
留意:
初始化失败-1
权限题目
在Android 11中,TTS功能需要使用ACCESSIBILITY_SERVICE权限。这是因为TTS可以读取屏幕上的文本,因此需要确保它不会滥用用户数据。假如没有这个权限,TTS的初始化过程可能会失败。为了解决这个题目,可以在AndroidManifest.xml文件中添加以下代码:
<uses-permission android:name="android.permission.ACCESSIBILITY_SERVICE"/>
复制代码
软件包可见性题目
在Android 11中,由于软件包可见性限制,可能会导致TTS初始化失败。解决这个题目标方法是在AndroidManifest.xml文件中增长<queries>标签,指定TTS服务的action:
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE"/>
</intent>
</queries>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4