Android开发中用的根据文字使用Speech进行语音播报

前言

本篇文章主要讲解的有关Android开发中用的根据文字使用Speech进行语音播报,下面具体讲一下使用方法和注意事项。


下面主要讲解具体的使用方法

一、添加语音权限

1.在清单文件AndroidManifest.xml添加

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

二、主要方法

1.TextToSpeech的接口剖析

构造方法有三个:
TextToSpeech(Context context, OnInitListener listener)
TextToSpeech(Context context, OnInitListener listener, String engine)
TextToSpeech(Context context, OnInitListener listener, String engine,String packageName, boolean useFallback)
看代码我们用的是第三个

三、使用方法

1.主要使用步骤

1、新建一个类(内部类也是可以的),实现OnInitListener接口,重写onInit()方法,通常是判断TTS引擎初始化的状态:
 private class TTSListener implements OnInitListener {
   
        @Override
        public void onInit(int status) {
   
            // TODO Auto-generated method stub
            if (status == TextToSpeech.SUCCESS) {
   
                Log.i(TAG, "onInit: TTS引擎初始化成功");
            }
            else{
   
                Log.i(TAG, "onInit: TTS引擎初始化失败");
            }
        }
    }
 2、获取TTS引擎
    mSpeech = new TextToSpeech(MainActivity.this, new TTSListener());
    
 3、在使用的时候,如果有需要可以调整TTS引擎参数,包括上面说的语速,语调,语言等等(当然,当前不支持中文,使用的话,先下载上面提到的服务或者应用并安装,然后在“设置”--》“语音与输入”--》“文本转语音输出”--》选择你安装中文TTS就可以了)
	mSpeech.setLanguage(SharedData.languageList.get(choosedLanguage));
	mSpeech.setSpeechRate(SharedData.voice_speed);
	mSpeech.setPitch(SharedData.voice_pitch);

2.封装的工具类

public class SpeechUtils {
   
    private Context context;

    private static final String TAG = "SpeechUtils";
    private static volatile SpeechUtils singleton;

    private TextToSpeech textToSpeech; // TTS对象

    public static SpeechUtils getInstance(Context context) {
   
        if (singleton == null) {
   
            synchronized (SpeechUtils.class) {
   
                if (singleton == null) {
   
                    singleton = new SpeechUtils(context);
                }
            }
        }
        return singleton;//
    }


    public SpeechUtils(Context context) {
   
        this.context = context;
        speakText(null);
    }


    /**
     * 关闭 语音合成
     */
    public void shutdown() {
   
        if (textToSpeech != null) {
   
            textToSpeech.stop();
            textToSpeech.shutdown();
            textToSpeech = null;
        }//
    }


    /**
     * 第二个参数queueMode用于指定发音队列模式,两种模式选择
     * (1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务
     * (2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后,
     *
     * @param text
     */
    public void speakText(String text) {
   
        if (textToSpeech == null) {
   
            textToSpeech = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
   
                @Override
                public void onInit(int i) {
   
                    if (i == TextToSpeech.SUCCESS) {
   
                        int result = textToSpeech.setLanguage(Locale.CHINA);
                        textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
                        textToSpeech.setSpeechRate(1.0f);
                    }
                }
            });
        }else {
   
            if (!TextUtils.isEmpty(text)) {
   
                textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, null);
            }
        }
    }

}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了Android中的Speech的使用,而Android提供了大量能使我们快速便捷地处理的函数和方法。

相关推荐

  1. Android开发根据文字使用Speech进行语音播报

    2024-01-31 18:02:03       51 阅读
  2. 开发需求总结14-数组对象根据相同id进行排序

    2024-01-31 18:02:03       118 阅读
  3. Android使用USB进行通信4种方式

    2024-01-31 18:02:03       33 阅读
  4. Android开发如何进行单元测试?

    2024-01-31 18:02:03       64 阅读
  5. Android开发如何进行单元测试?

    2024-01-31 18:02:03       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-31 18:02:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-31 18:02:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-31 18:02:03       82 阅读
  4. Python语言-面向对象

    2024-01-31 18:02:03       91 阅读

热门阅读

  1. MicroPython核心:字符串驻留(String interning)

    2024-01-31 18:02:03       47 阅读
  2. 32.GitHub基础学习

    2024-01-31 18:02:03       58 阅读
  3. Kotlin开发中有关时间的具体使用

    2024-01-31 18:02:03       57 阅读
  4. Golang中的方法链

    2024-01-31 18:02:03       48 阅读
  5. 本周黄金价格将面临重大风险事件

    2024-01-31 18:02:03       64 阅读
  6. LRU(Least Recently Used)

    2024-01-31 18:02:03       53 阅读