Delphi原生安卓中文语音合成 使用Delphi开发的安卓下中文语音合成,一个可以朗读中文的APP就那么简单。资源内包括开发源码。同时,还演示了动态申请权限、沉浸模式、Toast显示内容。 语音合成,据说Android系统从1.6版本开始就支持TTS(Text-To-Speech)。但是android系统默认的TTS引擎:Pic TTS不支持中文。好在现在国内较多的手机都已安装好中文的TTS引擎。使用Delphi开发一个可以朗读中文的APP就非常的简单。 安卓系统的TTS可支持很多语音引擎,如:谷歌、讯飞、度秘、小爱等。本文主要介绍了如何使用TTS,最终朗读效果由语音引擎确定。 如果您的手机暂时还没有可用的语音引擎或需要不同的合成效果,可搜索下载语音引擎。 如下图(不同手机设置方式有差异): 请下载我上传的演示代码。这里仅介绍语音合成部分,代码中动态申请权限、沉浸模式、Toast显示等不作介绍(其他内容请到相关文章中查看,后附地址)。 这里就只需要一句代码。简单吧。 也是一句代码 请注意,我这里为了方便,固化了文件保存名与路径,实际使用请修改。 整体代码量很小,1、定义监听类,定义使用的变量;2、初始化语音引擎;3、朗读;4关闭语音引擎。 使用Delphi开发安卓下中文语音合成,一个可以朗读中文的APP就那么简单。下载资源内包括开发源码。同时,还演示了动态申请权限、沉浸模式、Toast显示内容。 2、Google的语音合成引擎 你可能会需要用到。 1、《Delphi D10.X快速实现安卓状态栏沉浸模式》这是一个Delphi实现状态栏沉浸透明的文章 2、《Delphi D10.X安卓APP开发中简单使用原生Toast》这是上一篇的内容,也是这篇的基础。 3、《Delphi D10.X安卓APP开发让原生Toast显示图片》一个Toast更高级的用法。 (点击上面标题后直接查看) 欢迎光顾本人小店:(https://shop63778938.taobao.com/) 大家有什么不清楚的,可以给我留言或讨论。
前言
本文给大家介绍使用Delphi开发基于安卓原生的TTS(中文语音合成),将文字转语音实现中文的朗读。APP运行后,需要手机上已安装语音引擎。如果您手机上已安装并设置了语音引擎,即可开始朗读。
(或使用这个:Google的语音合成引擎,点击跳转下载页面)文字转语音(TTS)输出的设置
您可以选择并使用不同的语音引擎,但请注意,必须得有语音引擎
当然,现在有很多免费的语音引擎。完成后的APP
演示APP主要实现了朗读、停止朗读与保存到文件(请注意,演示中的保存到文件固化了保存目录与文件名,实际可以根据需要调整。另外,部分语音引擎提示保存成功,但实际文件中没有语音,如要保存,请更换语音引擎。)代码说明
需要引用的单元
Androidapi.JNI.Speech, // 这个是用于语音的
定义并实现TTS初始化监听类
// 初始化监听 TTTSIniL = class(TJavaLocal, JTextToSpeech_OnInitListener) public // 重写初始化监听事件 procedure onInit(status: Integer); cdecl; end; { TScanBroadcastReceiver } procedure TTTSIniL.onInit(status: Integer); var supported: Integer; begin if (status = TJTextToSpeech.JavaClass.SUCCESS) then begin // 设置朗读语言 supported := Form5.mTextToSpeech.setLanguage(TJLocale.JavaClass.CHINA); if ((supported <> TJTextToSpeech.JavaClass.LANG_AVAILABLE) and (supported <> TJTextToSpeech.JavaClass.LANG_COUNTRY_AVAILABLE)) then begin Toast('不支持当前语言!'); end; end; end;
定义变量
public { Public declarations } mTextToSpeech: JTextToSpeech; //安卓的语音合成 vTTSIniL: TTTSIniL;//前面我们定义的监听类
初始化代码
procedure TForm5.FormCreate(Sender: TObject); begin // 创建类 这个是用于沉浸显示的 vImmerse := TImmerse.Create; vImmerse.OnTopBotChanged := SetTopBot; // 创建时,初始化语音引擎 vTTSIniL := TTTSIniL.Create;//创建监听 mTextToSpeech := TJTextToSpeech.JavaClass.init(TAndroidHelper.context, vTTSIniL);//初始化语音合成 end;
语音合成(实现朗读)
// 朗读,对,就这一句 代码 mTextToSpeech.speak(StringToJString(Memo1.Text), TJTextToSpeech.JavaClass.QUEUE_FLUSH, nil);
停止朗读
mTextToSpeech.stop;
保存到文件
procedure TForm5.StrToFile; var I: Integer; vStr: JString; vHashMap: JHashMap; begin vStr := StringToJString(Memo1.Text); vHashMap := TJHashMap.JavaClass.init; vHashMap.put(TJTextToSpeech_Engine.JavaClass.KEY_PARAM_UTTERANCE_ID, vStr); //请注意,我这里为了方便,固化了文件保存名与路径,实际使用请修改 I := mTextToSpeech.synthesizeToFile(vStr, vHashMap, StringToJString('/mnt/sdcard/Test_speak.wav')); if (I = TJTextToSpeech.JavaClass.SUCCESS) then Toast('保存成功!'+#13#10+'演示时固定保存在sdcard/Test_speak.wav') else Toast('保存错误!'); end;
闭关语音引擎
// 退出时关闭语音引擎 if Assigned(mTextToSpeech) then mTextToSpeech.shutdown;
使用总结
我测试过几个我身边手机上的不同语音引擎,朗读的效果各有优劣,请根据自身的需要情况去选择吧。演示代码下载地址
相关或类似文章
小店也提供delphi方面其他技术支持、定制开发。
以上信息对您有用的话请,就下面这行
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算