Android TTS使用实例

Android原生TTS的基本使用以及配合中文语音包实现中文TTS 最近因为一些特殊需求,公司希望使用离线TTS,不花钱的中文离线TTS,最好音色还要多一点,语速,语调都要可控;总之一句话,以不花钱的代价达到最好的效果。其实现在很多的开发者平台也都提供一两种音色的离线TTS开发SDK,比如科大,云知声等等,我之前也做过一个百度在线ASR与云知声离线TTS结合实现的一个复读机的小Demo,有兴趣的朋友可以点击看一下 配合最近我上传的gi... 阅读详情
package com.example.ttsdemo;

import java.util.Locale;

import android.os.Bundle;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/*自动朗诵(TTS)
 * Android提供了自动朗读支持。自动朗读支持可以对指定文本内容进行朗读,从而发生声音;不仅如此,Android的自动朗读支持还
 * 允许把文本对应的音频录制成音频文件,方便以后播放。这种自动朗读支持的英文名称为TextToSpeech,简称TTS
 * 借助于TTS的支持,可以再应用程序中动态地增加音频输出,从而改善用户体验
 * Android的自动朗读支持主要通过TextToSpeech来完成,该类提供了如下一个构造器:
 * TextToSpeech(Context context,TextToSpeech.OnInitListener listener);
 * 从上面的构造器不难看出,当创建TextToSpeech对象时,必须先提供一个OnInitListener监听器--该监听器负责
 * 监听TextToSpeech的初始化结果
 * 一旦在程序中获得了TextToSpeech对象之后,接下来可调用TextToSpeech的setLanguage(Locale loc)方法来
 * 设置该TTS发声引擎使用的语言、国家选项
 * 如果调用setLanguage(Loacle loc)的返回值是“TextToSpeech.LANG_COUNTRY_AVAILABLE”说明当前TTS系统
 * 可以支持所设置的语言、国家选项
 * 对TextToSpeech设置完成后,就可调用它的方法来朗读文本了,TextToSpeech类中最常用的方法是如下两个
 * speak(String text,int queueMode,HashMap<String,String>params)
 * synthesizeToFile(String text,HashMap<String,String>params,String filename)
 * 上面两个方法都用于把text文字内容转换为音频,区别是speak方法是播放转换的的音频,而synthesizeToFile
 * 是把转换得到的音频保存成声音文件
 * 上面两个方法中的params都用于指定声音转换时的参数,speak()方法中的queuMode参数指定TTS的发音队列模式,
 * 该参数支持如下两个常量:
 * TextToSpeech.QUEUE_FLUSH:如果指定该模式,当TTS调用speak方法时,它会中断当前实例正在运行的任务(也可
 * 理解为清楚当前语音任务,转而执行新的语音任务)
 * TextToSpeech.QUEUE_ADD:如果指定为该模式,当TTS调用speak方法时,会把新的发音任务添加到当前发音任务队列
 * 之后--也就是等任务队列中的发音任务完成后再来执行speak()方法指定的发音任务
 * 当程序用完TextToSpeech对象之后,可以在Activity的OnDestroy()方法中调用它的shutdown()来关闭TextToSpeech、
 * 释放它所占用的资源
 * 主要步骤:
 * 1.创建TextToSpeech对象,创建时传入OnInitListener监听器监听创建是否成功
 * 2.设置TextToSpeech所使用语言、国家选项,通过返回值判断TTS是否支持该语言、国家选项
 * 3.调用speak()或synthesizeToFile方法
 * 4.关闭TTS,回收资源
 * 必须增加SD的读写权限:<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 */
public class MainActivity extends Activity {

	Button speak,record;
	EditText edit;
	TextToSpeech tts;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        speak=(Button) findViewById(R.id.spreak);
        record=(Button) findViewById(R.id.record);
        edit=(EditText) findViewById(R.id.edit);
        /*初始化TextToSpeech对象*/
        tts=new TextToSpeech(this, new OnInitListener() {
			
			@Override
			public void onInit(int status) {
				// TODO Auto-generated method stub
				/*如果装载TTS引擎成功*/
				if(status==TextToSpeech.SUCCESS){
					/*设置使用某种语言朗读*/
					int result=tts.setLanguage(Locale.ENGLISH);
					/*如果不支持这种语言*/
					if(result!=TextToSpeech.LANG_COUNTRY_AVAILABLE&&result!=TextToSpeech.LANG_AVAILABLE){
						Toast.makeText(MainActivity.this,"TTS暂不支持这种语言的朗读", Toast.LENGTH_SHORT).show();
					}
				}else{/*没有TTS引擎*/
					Toast.makeText(MainActivity.this,"暂不支持TTS", Toast.LENGTH_SHORT).show();
				}
			}
		});
        speak.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				/*执行朗读*/
				tts.speak(edit.getText().toString(),TextToSpeech.QUEUE_ADD,null);
			}
		});
        
        record.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				/*将朗诵文本的音频记录到指定文件*/
				tts.synthesizeToFile(edit.getText().toString(), null,"/mnt/sdcard/sound.wav");
				Toast.makeText(MainActivity.this, "声音记录成功", Toast.LENGTH_SHORT).show();
			}
		});
    }

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		if(tts!=null){
			/*关闭TestToSpeech*/
			tts.shutdown();
		}
	}
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
	<LinearLayout 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal">
	    <Button 
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:id="@+id/spreak"
	        android:text="播放"
	        android:layout_weight="1"/>
	    <Button 
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:id="@+id/record"
	        android:text="保存"
	        android:layout_weight="1"/>
	</LinearLayout>
	<EditText 
	    android:id="@+id/edit"
	    android:layout_width="fill_parent"
	    android:layout_height="400dp"
	    android:gravity="top|left"
	    />
	
</LinearLayout>


android原生TTS+语音引擎 实现纯离线 免费的中英TTS 之前使用百度的语音合成 sdk做了个简单的tts,但是它不是真正的免费和纯离线的,所以在查阅相关资料后,使用Android的原生TTS ,因为它不支持中文,需要借助其他语音引擎可实现纯离线 免费的TTS。 Android原生的TTS是不支持中文合成的,需要借助其他的语音引擎(apk安装包),比如科大讯飞语音引擎3.0,度秘语音引擎3.0以及新版手机基本都内置有语音引擎,可在设置——》语言——》首选... 阅读详情

相关推荐

Android TTS 实战一:认识 TTS

1.TTS定义 TextToSpeech简称 TTS,称为语音合成,是Android 从1.6版本开始支持的新功能,能将所指定的文本转成不同语言音频输出,文字转语音(text-to-speech,TTS)系统是将一般语言的文字转换为语音。 TTS功能需要有TTS Engine的支持,下面我们就来了解下android提供的TTS Engine。 Android使用了叫Pico的

棺材深處 3371

Android TTS学习——TTS初体验(上)

from: http://blog.youkuaiyun.com/ichliebephone/article/details/5802044 一.基础知识 TextToSpeech简称TTS,称为语音合成,是Android从1.6版本开始支持的新功能,能将所指定的文本转成不同语言音频输出。 在具体介绍前我们先来看下Adnroid系统带的TTS设置界...

weixin_34209406的博客 169

Android TTS学习——总结

一.简单介绍我们已经陆续的介绍了和TTS相关基础内容,包括从简单的朗读一个文本框中的内容,到增加多种语言的设置选择,使用TTS提供的两个接口中的回调函数,把TTS语音合成到文件,及为文本关联自定义的音频文件等。有了以上的基础,我们基本可以完成和TTS相关的应用了。但Android的TTS引擎还提供了一些其他的功能,比如addEarcon,playEarcon,playSilence,setPitch,setSpeechRate等,我们在具体使用的时候可以到这里http://androidappdocs.ap

ichliebephone的专栏 3648

Android TTS 实战二:全世界都知道我爱你

1.简介 实战而建立在实战一的基础上,只加了一个 Spinner ,给上一个 Demo 增加语言选择功能,可以使用 TTS 引擎支持的English、French、German、Italian和Spanish这5大语言来进行相应的语音合成,并用这5种外语向她说出“我爱你”。让全世界都知道我爱你~-~wlh 2.实例 xml布局代码 <LinearLayout xmlns:android=

棺材深處 2641

安卓中文文本转语音(TTS)实战演示

文本转语音(Text-to-Speech,简称TTS)技术允许将电子文本转化为清晰、自然的语音输出。TTS在移动平台的应用不断扩展,主要用于改善用户体验、提供辅助功能以及实现交互式通讯等。TTS技术通过计算机软件将文本信息转换为听得见的语音信息,广泛应用于智能助手、阅读器和导航系统。它不仅增加了信息获取的渠道,还提升了服务的可达性和包容性。在安卓平台上,TTS API提供了一系列的方法来实现文本到语音的转换。TTS服务的使用主要涉及到两个重要的接口:和。

weixin_30798867的博客 1657

安卓TTS语音合成技术详解及实战应用

TTS(Text-to-Speech)技术,即文本到语音技术,是一种将电子文本转化为自然语音的技术。它的核心功能是将文本信息转化为清晰、流畅的语音输出,以便于人类用户听取。随着人工智能技术的飞速发展,TTS引擎不仅需要完成基本的文本转语音功能,还要在音色、语调、情感表达等方面不断优化和进步。随着技术的不断进步,TTS引擎正逐步成为人机交互领域不可或缺的一部分,从智能助手到无障碍辅助,应用范围日益广泛。了解并掌握TTS引擎的核心功能,对于开发人员和用户都具有重要的意义。

weixin_28922227的博客 1582

Android Studio开发安卓app TTS文字转语音功能 android11系统无法调用TTS问题记录

Android Studio开发安卓app TTS文字转语音功能 android11系统无法调用TTS问题记录

qq445829096的博客 1344

android_tts_离线语音demo包文字转语音

android_tts_离线语音demo包文字转语音。 不依赖于手机的tts,及时手机没有安装tts,也可以运行。 成功的将文字转成语音,可以切换声音,调整语速。 尚存一个小问题,英文单词不认识了,读成了一个个字母。欢迎高人交流解决。

tts-server-android:把网络 TTS 音色搬进安卓的朗读与转发方案

在手机上读小说时,系统自带语音平铺直叙,想换成"晓晓"这类神经音色,就得靠 tts-server-android。它是一个 Android 系统级 TTS(文本转语音)应用,自己不内置合成引擎,而是用 JS 插件调用微软 Azure 等网络接口取回音频,再注册成系统 TTS 服务,这样手机里所有 App 都能直接调用。 ## 🧪 装好后先做的验证 安装 APK 打开应用,主界面就是 TTS

gitblog_00070的博客 1002

手说TTS中文DEMO

手说TTS,是Android平台下的中文语音引擎,提供了中文文本到语音的转换。 使用手说TTS进行中文文本的朗读,包括中文简繁体、阿拉伯数字、英文字母及一些符号的混读。并且处理了中文的多音字和音调转换等问题。个人工作室所做的。因为他提供了比较详细的二次开发接口,所以我下面就是针对他做了一个中文TTS开发。实际测试,效果差钱人意吧,普通话真的不是很好。此外,只有最新版的才有连贯功能,以前的没有,纠结我半天。

C#实战:如何用Chart控件打造专业级数据可视化报表(附完整代码)

本文详细介绍了如何使用C#的Chart控件创建专业级数据可视化报表,涵盖柱状图、饼图和雷达图等多种图表类型的高级定制与交互增强。通过完整的代码示例,展示了从环境配置到动态数据绑定的全流程,助力开发者提升企业级应用的数据可视化能力。

ipfs8storage的博客 420

关于集成百度导航 TTS语音没有声音 android安卓

TTS语音失效

从入门到放弃 2879

DLL导出函数名隐藏实战:三种方法保护代码安全

在Windows软件开发中,动态链接库(DLL)的导出函数名是模块间通信的关键标识,也是逆向工程的重要突破口。理解PE文件格式中的导出表结构是掌握DLL工作原理的基础,它记录了函数地址、名称和序号的映射关系。通过隐藏或混淆这些导出名称,可以有效增加代码分析的难度,提升软件的知识产权保护和安全性。这一技术在软件保护、游戏反作弊和安全组件中具有重要价值。本文聚焦DLL导出函数名隐藏,结合Dependencies工具分析,详细解析仅序号导出、导出转发器和运行时动态修改三种实用方案,为开发者提供从原理到实践的完整指

weixin_29315091的博客 307

安卓离线中文TTS引擎安装教程 ——基于TensorFlow TTS的轻量化实现

本教程将引导您完成**benjaminwan/ChineseTtsTflite**项目的下载与安装。这个开源项目是一个专门为安卓系统设计的离线中文文本转语音(TTS)引擎,它利用了TensorFlow TTS技术,并特别适配以支持TFLite模型,使得在不依赖网络的情况下也能实现高质量的语音合成。项目采用了Kotlin编程语言,结合JetPack Compose,适应现代Android开发趋势。 ...

gitblog_01234的博客 3555

PyFluent进阶实战:自动化密闭几何(Watertight)网格生成

本文深入探讨了如何利用PyFluent实现自动化密闭几何(Watertight)网格生成。通过Python脚本控制Fluent Meshing工作流,工程师可以高效、一致地完成从几何导入、局部尺寸定义、面网格生成到边界层设置和体网格输出的全过程,从而将复杂的CFD前处理工作转化为可重复、可集成的自动化流程,极大提升仿真效率和知识复用性。

t8u9v0w1x的博客 578

Aruba CX交换机 初始化配置

Aruba CX 交换机 6000系列 8000系列交换机配置

Harry_Guo 1834

Android TTS学习——TTS初体验

一.基础知识TextToSpeech简称 TTS,称为语音合成,是Android 从1.6版本开始支持的新功能,能将所指定的文本转成不同语言音频输出。在具体介绍前我们先来看下Adnroid系统带的TTS设置界面,点击Settings->Speech synthesis,如下图所示:图 1 Android TTS设置界面    当点击“Listen to an example”时,会发出“This is an example of speech synthesis in English.”,如果没有安装TTS

ichliebephone的专栏 2万+

2026华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解

华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,

KJ.JK 4689

Android TTS系列一——如何让app具备tts能力

源码地址:https://github.com/yellowgreatsun/MXTtsEngine 自2016年阿尔法狗大胜李世石以来,AI迅速普及,而其中语言AI就是落地化比较彻底的应用,也自然成了许多应用、智能硬件的标配功能。本人目前主要从事Android开发,2018年曾对tts做了比较多的研究,这几天,就想把之前的笔记再好好整理一番,写成博客分享给更多的开发者。 Android TTS系...

抹香随笔 4704

真题库系列之 CCF GESP 2025年12月认证 Python 1级真题含正确答案与解析

学生通过计算机基础知识的学习,了解计算机的构成与操作,以及计算机的发 展历程。通过编程基础知识以及语句的掌握,可以独立完成简单功能的顺序结构、 分支结构、循环结构的程序。

iCloudEnd的博客 316

Ubuntu Rtx3090 Cuda11.7 安装 pytorch3d

pytorch ubuntu pytorch3d 安装

G果的博客 2273

Android 系统原生TTS使用

1.相关权限策略 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 2.TTS播放对象创建 import ...

qq_26476193的博客 2250

YOLOv8改进---BiFPN特征融合

yolov8结合BiFPN进行改进

qq_41920323的博客 4523

tts高级编程 android,Android TTS(TextToSpeech) 使用

在 onInit() 方法中判断初始化是否成功,初始化成功使用 toSpeech.setPitch(1.0f) 进行设置音调,值越大,音调越高。// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规。TTS 是 Text To Speech 的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。使用 textToSpeech.setSpeechRate(1.5f) 设定语速,默认1.0正常语速。// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规。

全粘工程师 3275

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

基于PP-TTS的安卓手机部署

使用PP-TTS流程,在安卓手机上实现语音合成声学模型与声码器的高性能推理

m0_63642362的博客 1629

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

安卓文字转语音(TTS)的使用及封装的工具类

安卓文字转语音(TTS)的使用及封装的工具类 前言:在安卓中会有原生的包提供文字转语音的功能,使用后可以输出中文/英文等语言的语音,实现这部分的包名为TTS。那么本篇文章将会探讨如何使用TTS语音。此外,网上也已经有了许多介绍TTS使用的文章,那么大家会发现,TTS使用前是需要初始化的,那么如何精简我们的代码,使得我们使用的TTS能单独封装成一个工具类来使用呢,也会在本文中介绍。 首先我们直接来看下代码: /** * TTS语音输出 */ public class TTSUtils { p

LeeBrook0的博客 2071
上一篇: Android自定义手势与手势匹配
下一篇: SurfaceView实现模拟时钟
android_xc
博客等级 码龄12年 15粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值