gpt4 book ai didi

android - 文本到语音应用程序无法在 android studio 的模拟器中运行,但可以在 android 设备中运行

转载 作者:行者123 更新时间:2023-12-05 00:18:17 31 4
gpt4 key购买 nike

我必须在android模拟器中更改一些设置吗?
该应用程序在 android 设备中运行,但不在模拟器中运行。当我按下转换按钮时,它根本不输出任何语音。我什至检查了其他应用程序是否通过扬声器输出。是的,youtube 工作得非常好。

package com.example.labpgm7;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.Locale;

public class MainActivity extends AppCompatActivity {
EditText texttospeak;
Button speak;
TextToSpeech t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
texttospeak=findViewById(R.id.texttospeech);
t=new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status)
{

}
});
}

public void speak(View v)
{
String text=texttospeak.getText().toString();
t.setPitch(1.0f);
t.setSpeechRate(1.0f);
t.speak(text,TextToSpeech.QUEUE_FLUSH,null);
}
}

最佳答案

TTS 在模拟器上不起作用的原因是因为 TextToSpeech实例创建应该异步执行,而不是在主 UI 线程中。
实际上,您必须通过等待 onInit() 来确保 TTS 初始化成功。验证状态为 TextToSpeech.SUCCESS 的回调.语言也应该被定义,例如(使用 AsyncTask 仅用于演示):

private class TTSInit extends AsyncTask<Void, Void, Void> {

@Override
protected Void doInBackground(Void... voids) {
t=new TextToSpeech(getContext(), status -> {
if (status == TextToSpeech.SUCCESS) {
t.setLanguage(Locale.ENGLISH);
/* now you can invoke speak() */
}
});
return null;
}
}
最后,如果您的目标是 Android 11,则应将以下代码添加到 list 中:
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>

关于android - 文本到语音应用程序无法在 android studio 的模拟器中运行,但可以在 android 设备中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68667592/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com