700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android【语音合成TTS】

Android【语音合成TTS】

时间:2022-01-02 00:02:09

相关推荐

Android【语音合成TTS】

Android语音合成

简单​到​不可想象🙂

文字转化为语音Android中TextToSpeech类的简单使用

学习使用,请勿传播

简介:😄

TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。

它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转化为自然语音流。TTS技术对文本文件进行实时转换,转换时间之短可以秒计算。在其特有智能语音控制器作用下,文本输出的语音音律流畅,使得听者在听取信息时感觉自然,毫无机器语音输出的冷漠与生涩感。TTS语音合成技术 即将覆盖国标一、二级汉字,具有英文接口,自动识别中、英文,支持中英文混读。所有声音采用真人普通话为标准发音,实现了120-150个汉字/分钟的快速语音合成,朗读速度达3-4个汉字/秒,使用户可以听到清晰悦耳的音质和连贯流畅的语调。现在有少部分MP3随身听具有了TTS功能。

TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。TTS不仅能帮助有视觉障碍的人阅读计算机上的信息,更能增加文本文档的可读性。现在的TTS应用包括语音驱动的邮件以及声音敏感系统,并常与声音识别程序一起使用。

1、必须知道的部分

TextToSpeech的功能:将文字快速转化为语音进行播放或者保存为音频文件

android也可以实现把输入的文字朗读出来,使用到的是TextToSpeech,将一段文字转换为成语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。

目前只支持5种语言:English、 French 、 German 、 Italian 和 Spanish。

TextToSpeech必须被实例化之后才能使用.实现TextToSpeech.OnInitListener方法来获取实例化结果的监听。当你已经使用完TextToSpeech实例之后, 应该调用shutdown()方法来释放TextToSpeech所使用的本地资源。

使用前需先安装第三方插件,例如本次使用了

讯飞中文引擎支持.apk(百度上有,我也会上传到资源)

构造方法

//使用默认的引擎

TextToSpeech(Context context, TextToSpeech.OnInitListener listener)//使用指定的引擎

TextToSpeech(Context context, TextToSpeech.OnInitListener listener, String engine)

2、TTS初始化常用方法

setLanguage设置语言,帮助文档里面写了有22种TextToSpeech.LANG_MISSING_DATA:表示语言的数据丢失。TextToSpeech.LANG_NOT_SUPPORTED:不支持

// 参数Context,TextToSpeech.OnInitListenermTextToSpeech = new TextToSpeech(this, this);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规mTextToSpeech.setPitch(1.0f);// 设置语速mTextToSpeech.setSpeechRate(0.5f);// setLanguage设置语言int result = mTextToSpeech.setLanguage(Locale.CHINA);// 常用初始化方法if (result == TextToSpeech.LANG_MISSING_DATA|| result == TextToSpeech.LANG_NOT_SUPPORTED) {Toast.makeText(this, "数据丢失或不支持", Toast.LENGTH_SHORT).show();}

3、初步实例

初始化(init)

private void Speak() {mTextToSpeech=new TextToSpeech(this, new TextToSpeech.OnInitListener() {@Overridepublic void onInit(int status) {if (status==TextToSpeech.SUCCESS) {//设置朗读语言int supported=mTextToSpeech.setLanguage(Locale.CHINA);if ((supported!=TextToSpeech.LANG_AVAILABLE)&&(supported!=TextToSpeech.LANG_COUNTRY_AVAILABLE)) {Toast.makeText(RFID_Reader.this, "不支持当前语言!", Toast.LENGTH_SHORT).show();}}}});}

朗读

mTextToSpeech.speak("本次消费"+tmp+"元", TextToSpeech.QUEUE_FLUSH, null);

注意:🌤

有时需配合Handler来进行逐步朗读,自己设定相关算法进行不重复朗读。

4、发现😩

使用TTS非常的简单,只需要用两行代码就能轻松搞定

// 初始化TextToSpeech speak = new TextToSpeech(this,null);// 使用speak.speak("欢迎光临",TextToSpeech.QUEUE_FLUSH,null);

5、简单案例

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/test"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!\nThis is Suk!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

package com.example.a4_4_voicedemo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.speech.tts.TextToSpeech;import android.view.View;import android.widget.TextView;public class MainActivity extends AppCompatActivity {private TextToSpeech textToSpeech;private TextToSpeech speak;private TextView txt;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);speak = new TextToSpeech(this,null);txt = findViewById(R.id.test);txt.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {speak.speak(txt.getText().toString()+",这里是TTS输出!",TextToSpeech.QUEUE_FLUSH,null);}});}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。