TextToSpeech文本转语音

目录

一、TextToSpeech类中的常用方法

二、使用例子

MainActivity:

activity_main:

效果图:

一、TextToSpeech类中的常用方法

        TextToSpeech是一个Android平台提供的文本转语音功能,可以将文字快速地转换为语音播放。

方法名称功能
setLanguage(Locale)设置要输出的语言种类
setPitch(float x)设置语音的音调(范围0.5到2.0)
setSpeechRate(float)设置语音的速度(范围为0.1到2.0)
speak(CharSequence c,int i,Bundle b,String s)将文本转成语音并播放
stop()停止当前正在播放的语音
shutdown()释放资源

二、使用例子

MainActivity:

package com.example.tts;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
import java.util.Locale;
public class MainActivity extends Activity implements View.OnClickListener {
    private TextToSpeech tts;
    private EditText editText;
    Button speak,record;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化TextToSpeech对象
        initToSpeech();
        // 初始化界面
        initView();
    }

    private void initView() {
        editText = (EditText) findViewById(R.id.text_ed);
        speak = findViewById(R.id.speak);
        speak.setOnClickListener(this);
        record = findViewById(R.id.record_voice);
        record.setOnClickListener(this);
    }

    private void initToSpeech() {
        tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {

            @Override
            public void onInit(int status) {
                // 如果装载TTS引擎成功
                if (status == TextToSpeech.SUCCESS) {
                    // 设置使用中文朗读
                    int result = tts.setLanguage(Locale.CHINA);
                    // 如果不支持所设置的语言
                    if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
                            && result != TextToSpeech.LANG_AVAILABLE) {
                        Toast.makeText(MainActivity.this,
                                "TTS暂时不支持这种语言的朗读!", Toast.LENGTH_LONG).show();
                    }
                }
            }
        });
        tts.setPitch(1.5f);
        // 设置语速
        tts.setSpeechRate(1.0f);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 关闭TextToSpeech对象
        if (tts != null) {
            tts.shutdown();
        }
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.record_voice:
                // 将朗读文本的音频记录到指定文件
                File f1=new File("/mnt/sdcard/sound.wav");
                //Android 5.0及以上
                tts.synthesizeToFile (editText.getText(), null, f1,"111");
                //Android 5.0 以下
                //tts.synthesizeToFile(editText.getText().toString(), null, "/mnt/sdcard/sound.wav");
                Toast.makeText(MainActivity.this, "声音记录成功!",
                        Toast.LENGTH_SHORT).show();
                break;
            case R.id.speak:
                // 执行朗读
                //Android 5.0及以上
//                tts.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null, "111");
                //Android 5.0 以下
                tts.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
                break;
        }
    }
}

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/text_ed"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <Button
        android:id="@+id/speak"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="朗读"
        />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/record_voice"
            android:hint="11111"
            android:text="记录语音"/>
</LinearLayout>


</LinearLayout>

效果图:

 

 

 

### 回答1: 如果TextToSpeech没有语音播放,有以下几种可能原因: 1. 语音引擎没有正确安装:您需要确保您的设备上已经安装了正确的语音引擎,否则TextToSpeech无法正常工作。 2. 音频设备问题:您需要确保您的音频设备是正确连接的,并且可以正常工作。 3. 代码实现问题:您需要确保您的代码正确地实现了TextToSpeech功能,并且没有出现任何错误。 如果您仍然无法解决问题,请考虑寻求技术支持或进一步的帮助。 ### 回答2: TextToSpeech是用于将文本换为语音的技术或工具。 通常,当TextToSpeech没有语音播放时,可能有以下几个原因: 1. 硬件问题:首先,需要确保您的设备上有可用的扬声器或耳机。如果设备的扬声器或耳机未连接、损坏或静音,则TextToSpeech无法播放语音。请检查您的设备音量设置并确保它们处于正常工作状态。 2. 权限问题:在某些设备或操作系统上,TextToSpeech可能需要访问设备的音频权限。请确保您已为TextToSpeech应用程序授予所需的权限。您可以在设备设置中的应用程序权限部分找到并检查这些设置。 3. 文本输入问题:TextToSpeech需要文本输入才能生成语音。确保您已正确输入要换为语音文本,并使用适当的方法将其传递给TextToSpeech引擎。 4. 引擎设置问题:某些TextToSpeech引擎可能需要特定的配置或设置才能正常工作。请检查您所使用的引擎的设置并确保它们正确配置和激活。 如果您没有找到解决问题的方法,建议您尝试重启设备并重新安装TextToSpeech应用程序。如果问题仍然存在,您可以尝试使用另一个TextToSpeech引擎或与设备制造商或开发人员社区联系以获取进一步的帮助和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值