小工具知识网

当前位置: 首页 > 行业知识 > 简述Android语音播报TTS

行业知识

简述Android语音播报TTS

2026-11-01 05:26:31 来源:互联网转载

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)

博客主页:开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN

如果文章对您有一定的帮助请关注✨、点赞、收藏、评论。

如需转载请参考【转载须知】

在现代移动应用程序开发中,语音合成技术(TTS)扮演着越来越重要的角色。Android 平台提供了丰富的 TTS API,使开发者能够轻松地将文本转换为自然流畅的语音。本文将介绍 Android TTS 技术的基本概念、使用方法以及一些最佳实践。

什么是 Android TTS?

Android TTS 是指 Android 文本到语音(Text-to-Speech)技术,它允许开发者通过编程方式将文本转换为语音。这项技术对于构建无障碍应用、语音助手、语音导航以及其他语音交互应用至关重要。

使用 Android TTS API

Android TTS API 提供了一套丰富的方法和回调,用于控制语音合成的各个方面。以下是一个简单的示例,演示了如何在 Android 应用中使用 TTS API:

Android TTS(Text-to-Speech)提供了一系列方法,用于控制文本到语音的转换过程。以下是 Android TTS 中常用的方法:TextToSpeech(Context context, TextToSpeech.OnInitListener listener):构造方法,用于初始化 TTS 引擎。setLanguage(Locale loc):设置 TTS 引擎的语言。speak(String text, int queueMode, HashMap params):将指定的文本转换为语音并播放。stop():停止当前的语音合成。shutdown():释放 TTS 引擎的资源。setPitch(float pitch):设置语音的音调。setSpeechRate(float speechRate):设置语音的语速。isSpeaking():检查当前是否正在进行语音合成。

这些方法可以让开发者控制 TTS 引擎的各个方面,包括语言设置、文本合成、语音参数调整等。通过合理使用这些方法,开发者可以实现自定义的语音合成功能,满足不同应用场景的需求。

如果我们要使用首先,请确保你的应用程序有适当的权限。在 AndroidManifest.xml 文件中添加以下权限:

 

最简单的实例:

TextToSpeech tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() {    @Override    public void onInit(int status) {        if (status == TextToSpeech.SUCCESS) {            tts.setLanguage(Locale.US);            tts.speak("Hello, welcome to the TTS demo.", TextToSpeech.QUEUE_FLUSH, null, null);        } else {            Log.e("TTS", "Initialization failed");        }    }});// 在 Activity 销毁时释放 TTS 资源@Overrideprotected void onDestroy() {    if (tts != null) {        tts.stop();        tts.shutdown();    }    super.onDestroy();}

下面是自己封装的工具类想用的可以直接使用

/** * Copyright (C) 2023-2024 Author * * TTS语音播报工具类 * * @author   xiaolu * @date     2023/11/10 * @version  1.0.0 */public class TTSUtil {    private TextToSpeech textToSpeech;    private Context context;    private boolean initialized = false;    private float defaultSpeechRate = 1.0f;  // 默认语速    private float defaultPitch = 1.0f;       // 默认音调    private Locale defaultLocale = Locale.CHINESE; // 默认语言    private String utteranceId = "utteranceId"; // 唯一标识符    public interface TTSListener {        void onInitSuccess();        void onInitFailure();        void onSpeechStart();        void onSpeechDone();        void onSpeechError(String errorMessage);    }    public TTSUtil(Context context, final TTSListener listener) {        this.context = context;        textToSpeech = new TextToSpeech(context, new TextToSpeech.OnInitListener() {            @Override            public void onInit(int status) {                if (status == TextToSpeech.SUCCESS) {                    initialized = true;                    if (listener != null) {                        listener.onInitSuccess();                    }                } else {                    if (listener != null) {                        listener.onInitFailure();                    }                }            }        });    }    // 设置默认语速    public void setDefaultSpeechRate(float speechRate) {        defaultSpeechRate = speechRate;    }    // 设置默认音调    public void setDefaultPitch(float pitch) {        defaultPitch = pitch;    }    // 设置默认语言    public void setDefaultLocale(Locale locale) {        defaultLocale = locale;    }    // 文本转语音    public void speak(String text) {        speak(text, utteranceId);    }    public void speak(String text, String utteranceId) {        speak(text, utteranceId, defaultLocale, defaultSpeechRate, defaultPitch);    }    public void speak(String text, String utteranceId, Locale locale, float speechRate, float pitch) {        if (initialized) {            textToSpeech.setLanguage(locale);            textToSpeech.setSpeechRate(speechRate);            textToSpeech.setPitch(pitch);            HashMap params = new HashMap();            params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, utteranceId);            textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, params);            textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {                @Override                public void onStart(String utteranceId) {                    Logger.d("TTS TTSUtil onStart: " + utteranceId);                }                @Override                public void onDone(String utteranceId) {                    Logger.d("TTS TTSUtil onDone: " + utteranceId);                }                @Override                public void onError(String utteranceId) {                     Logger.d("TTS TTSUtil onError: " + utteranceId);                }            });        }    }    // 释放资源    public void release() {        if (textToSpeech != null) {            textToSpeech.stop();            textToSpeech.shutdown();        }    }}

布局:

        

实例:

private TTSUtil ttsUtil; // 创建TTSUtil实例并传入Context和TTSListener        ttsUtil = new TTSUtil(this, new TTSUtil.TTSListener() {            @Override            public void onInitSuccess() {                // TTS引擎初始化成功                // 这里可以进行语音合成操作                String text = "初始化语音成功";                ttsUtil.speak(text);                Logger.e("TTS  TTSUtil  onInitSuccess 初始化语音成功");            }            @Override            public void onInitFailure() {                Logger.e("TTS  TTSUtil onInitFailure TTS引擎初始化失败");            }            @Override            public void onSpeechStart() {                Logger.e("TTS  TTSUtil onSpeechStart 语音合成开始");            }            @Override            public void onSpeechDone() {                Logger.e("TTS  TTSUtil onSpeechDone 语音合成完成");            }            @Override            public void onSpeechError(String errorMessage) {                Logger.e("TTS  TTSUtil onSpeechError 语音合成出错 " + errorMessage);            }        });        binding.button.setOnClickListener(v -> {            ttsUtil.speak(binding.textView.getText().toString().trim());        });

Android TTS 技术为开发者提供了强大的工具,用于构建各种语音交互应用。通过合理地使用 TTS API,并遵循最佳实践,开发者可以为用户提供更加智能、便捷的应用体验。随着 TTS 技术的不断发展,相信在未来,它将在更多领域展现出其强大的潜力。

无论是哪个阶段,坚持努力都是成功的关键。不要停下脚步,继续前行,即使前路崎岖,也请保持乐观和勇气。相信自己的能力,你所追求的目标定会在不久的将来实现。加油!

上一篇:Linux清屏终极指南,轻松掌握多种方法,快速刷新你的终端!

下一篇:掌握吊兰牡丹吊兰的养殖秘诀,轻松开启绿色生活!