安卓离线语音合成

4
我和我的朋友正在开发一个应用程序,利用深度学习和神经网络来帮助视障人士。我们正在寻找一种方式,通过智能手机的摄像头将神经网络获得的信息以语音的形式呈现给用户,因此我们需要进行文本转语音。
但是,对于用户而言,使应用程序离线工作是一个非常重要的问题,因为应用程序的所有其他部分都可以在没有互联网连接的情况下运行(包括神经网络等)。因此,我们正在寻找一种离线文本转语音的方法。由于应用程序是用俄语编写的,所以寻找一种支持多种语言的方法将是很不错的选择。
我们将非常感激任何关于如何在Android Studio中实现离线文本转语音的提示,谢谢!
1个回答

5

试一下这个。确保在你的xml布局中添加一个文本输入框和按钮

import java.util.Locale;
import android.speech.tts.TextToSpeech;

public class TextToSpeech {

    private EditText write;
    private TextToSpeech t1;
    private Button speakbtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_to_speech);

        write = (EditText) findViewById(R.id.editText);
        speakbtn = (Button) findViewById(R.id.board);

        t1 = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                if (status != TextToSpeech.ERROR) {
                    t1.setLanguage(Locale.ENGLISH);
                }
            }
        });
        speakbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String toSpeak = write.getText().toString();
                Toast.makeText(getApplicationContext(), toSpeak, Toast.LENGTH_SHORT).show();
                t1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
            }
        });
    }
    
    @Override
    public void onDestroy() {
        // Dont forget to shut down text to speech
        if (t1 != null) {
            t1.stop();
            t1.shutdown();
        }
        super.onDestroy();
    }
}

非常感谢你,Benjamin。它在英语中运行得非常出色,就像我们一直在寻找的那样,伙计!也许有办法让它在俄语中工作吗? - Ivan Goncharov
别担心,伙计,我们在你的回复后弄清楚了如何在俄语中使用它!你救了我们的命!非常、非常、非常感谢你! - Ivan Goncharov
始终欢迎。 - Benjamin Hue
这是如何工作的?它是否可以在所有特定API级别以上的Android设备上离线一致地工作,还是只适用于某些设备? - Saifur Rahman Mohsin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接