Android Studio开发安卓app TTS文字转语音功能 android11系统无法调用TTS问题记录

Android Studio开发安卓app TTS文字转语音功能 android11系统无法调用TTS问题记录

同样的apk,android9可以叫号,android11无法叫号
排查代码发现textToSpeech.speak 函数返回了 -1, 说明调用安卓的 文字转语音方法失败

textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null);

失败原因有很多,比如没tts引擎,但是我已经安装了科大讯飞的,由于安卓9可以,于是猜测是安卓11的限制,继续查资料;
在谷歌安卓开发文档中发现在android11系统下对于使用到TTS能力的应用,需要修改应用中的AndroidManifest.xml清单声明

https://developer.android.google.cn/reference/android/speech/tts/TextToSpeech
 <queries>
 <intent>
      <action android:name="android.intent.action.TTS_SERVICE" />
  </intent>
 </queries>

在这里插入图片描述

在AndroidManifest.xml 增加配置,再次打包后,安卓11成功叫号
在这里插入图片描述

以下是在 Android Studio调用百度 API 进行文字转语音的代码示例: 1. 在 build.gradle 中添加依赖: ``` implementation 'com.baidu.android:bd-speech:1.0.0.12' ``` 2. 在布局文件中添加一个按钮和一个 EditText: ``` <Button android:id="@+id/btn_speak" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Speak"/> <EditText android:id="@+id/et_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Input text to speak"/> ``` 3. 在 MainActivity.java 中添加以下代码: ```java import com.baidu.tts.client.SpeechSynthesizer; import com.baidu.tts.client.TtsMode; public class MainActivity extends AppCompatActivity { private Button btnSpeak; private EditText etText; private SpeechSynthesizer mSpeechSynthesizer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化按钮和 EditText btnSpeak = findViewById(R.id.btn_speak); etText = findViewById(R.id.et_text); // 初始化语音合成对象 mSpeechSynthesizer = SpeechSynthesizer.getInstance(); mSpeechSynthesizer.setContext(this); mSpeechSynthesizer.setAppId("your_app_id"); // 替换为自己的 App ID mSpeechSynthesizer.setApiKey("your_api_key"); // 替换为自己的 API Key mSpeechSynthesizer.setSecretKey("your_secret_key"); // 替换为自己的 Secret Key mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0"); // 设置为女声 mSpeechSynthesizer.initTts(TtsMode.MIX); // 初始化合成引擎 // 点击按钮进行语音合成 btnSpeak.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String text = etText.getText().toString(); mSpeechSynthesizer.speak(text); } }); } @Override protected void onDestroy() { super.onDestroy(); mSpeechSynthesizer.release(); // 释放合成引擎 } } ``` 注意替换 `setAppId`、`setApiKey` 和 `setSecretKey` 方法中的参数为自己在百度开发者平台申请的 App ID、API Key 和 Secret Key。此外,还可以通过 `setParam` 方法设置语音合成的参数,例如设置说话人和语速等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值