简述Android语音播报TTS

这篇具有很好参考价值的文章主要介绍了简述Android语音播报TTS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✍️作者简介:小北编程(专注于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<String, String> params):将指定的文本转换为语音并播放。

stop():停止当前的语音合成。

shutdown():释放 TTS 引擎的资源。

setPitch(float pitch):设置语音的音调。

setSpeechRate(float speechRate):设置语音的语速。

isSpeaking():检查当前是否正在进行语音合成。

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

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

最简单的实例:

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 资源
@Override
protected 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<String, String> 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();
        }
    }
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:ignore="MissingDefaultResource,Orientation">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:textSize="20dp"
        android:text="无论面对多大的挑战,你都有足够的力量去克服。每一步的努力,都是通向成功的道路上的一部分。不要忘记,你的梦想和目标值得追求,而你所做的每一个努力都是迈向成功的关键一步。坚持、努力、相信自己,你一定能够创造出美好的明天。你是独一无二的,你的能力是无限的。相信自己,你可以超越自己的期望,创造出令人惊叹的成就。在每一个困难面前,都蕴藏着机会和成长。保持积极的态度,勇往直前,你将发现自己能够达到意想不到的高度。愿你在人生的旅途中,勇敢前行,敢于梦想,勇于追求,你的未来会因此变得更加辉煌。"/>

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:text="点击测试TTS语音"/>
</LinearLayout>

实例:

	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 技术的不断发展,相信在未来,它将在更多领域展现出其强大的潜力。

无论是哪个阶段,坚持努力都是成功的关键。不要停下脚步,继续前行,即使前路崎岖,也请保持乐观和勇气。相信自己的能力,你所追求的目标定会在不久的将来实现。加油!文章来源地址https://www.toymoban.com/news/detail-855647.html

到了这里,关于简述Android语音播报TTS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ESP32S3 Sense接入语音识别+MiniMax模型+TTS模块语音播报】

    讲解视频: ESP32S3 AI助手使用MiniMax大模型生产工具1 大家好,今天的教程将围绕如何实现精准的语音播报功能展开,我们用到了ESP32S3 Sense接入语音识别+MiniMax模型对话+SNR9816TTS模块。 目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦

    2024年04月12日
    浏览(34)
  • 【TTS】uni-app语音播报app开发 / MT-TTS安卓原生自带语音合成插件(免费无限次)

    TTS 是 Text To Speech 的缩写,即“ 从文本到语音 ”,是人机对话的一部分,让机器能够说话。TTS是语音合成应用的一种。 在程序开发中,有很多TTS的插件,比如百度,讯飞,等等,但是大部分产品都不是完全免费无限制次数调用的且需在线使用 本篇文章介绍一种免费快捷且可

    2023年04月15日
    浏览(119)
  • Android 调用TTS语音引擎过程及问题记录

      背景是需要在华为平板上部署一个能够进行相关中文语音提示的APP,华为系统为鸿蒙3.0,对应Android API 12.   调用TTS引擎之前,首先要确认自己的设备中是否安装了相关的文本转语音引擎以及是否支持中文,查看方法为“设置-辅助功能-无障碍-文本转语音”,鸿蒙系统是

    2024年02月16日
    浏览(32)
  • Android RecyclerView使用简述

      RecyclerView是Android中非常受欢迎的控件,RecyclerView是官方在Android5.0之后新添加的控件,推出用来替代传统的ListView和GridView列表控件,所以如果你还在使用ListView的话可以替换为RecyclerView了。 文章的功能可以先运行看看效果,APK下载   对于RecyclerView的使用根据实际项目进

    2023年04月08日
    浏览(79)
  • android 开发 W/TextToSpeech: speak failed: not bound to TTS engine

    笔者使用TTS(TextToSpeech)对于文本内容进行语音播报,控制台报错 笔者核心代码: 运行控制台报错内容: 步骤1、 在 packageappsrcmainAndroidManifest.xml 中配置如下内容: 具体操作如下图所示: 具体代码: 若进行英语播报,进行到此处问题即可解决。若是需要进行中文播报,需继

    2024年01月20日
    浏览(39)
  • 【vue 语音播报(文字转语音)】

    查看代码 参考 1.speak-tts: https://github.com/tom-s/speak-tts 2.Vue中使用speak-tts插件实现点击按钮后进行语音播报(TTS/文字转语音) :https://www.cnblogs.com/badaoliumangqizhi/p/15822975.html 3.vue 语音播报(文字转语音)https://www.icode9.com/content-4-864733.html

    2024年02月11日
    浏览(45)
  • uniapp小程序使用文字转语音播报类似支付宝收款播报

    第一步:登陆微信公众平台,侧边栏的设置-----第三方设置-----插件管理----添加插件(搜索–同声传译) 第二步:打开 hbiuider-x,找到当前项目,打开manifest.json,找到源码视图,配置插件     第三步,页面引入使用  

    2024年02月12日
    浏览(30)
  • uniapp 语音文本播报功能

    最近uniapp项目上遇到一个需求 就是在接口调用成功的时候加上语音播报 , ‘创建成功’ ‘开始成功’ ‘结束成功’ 之类的。 因为是固定的文本 ,所以我先利用工具生成了 文本语音mp3文件,放入项目中,直接用就好了。 这里用到的工具: 知意配音 链接地址:https://peiy

    2024年02月15日
    浏览(31)
  • h5开发语音播报功能

    一、使用window自带的api,但是手机浏览器多数不支持,兼容性差(不推荐) 1.使用到了window的speechSynthesis属性,如下如1.1                                                                         图1.1  2.主要用到了播报方法speak()和取消播报

    2024年02月14日
    浏览(37)
  • uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)

    uni-app/vue 文字转语音朗读(小程序语音识别和朗读) 一、第一种方式:直接加语音包 固定的文本 先利用工具生成了 文本语音mp3文件,放入项目中,直接用就好了 这里用到的工具:知意配音 链接地址:https://peiyin.wozhiyi.com/newproduction.html 接下来,代码部分。 在min.js文件里加

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包