android原生TTS+语音引擎 实现纯离线 免费的中英TTS

news/2024/11/8 17:03:50/

之前使用百度的语音合成 sdk做了个简单的tts,但是它不是真正的免费和纯离线的,所以在查阅相关资料后,使用Android的原生TTS ,因为它不支持中文,需要借助其他语音引擎可实现纯离线 免费的TTS。

Android原生的TTS是不支持中文合成的,需要借助其他的语音引擎(apk安装包),比如科大讯飞语音引擎3.0,度秘语音引擎3.0以及新版手机基本都内置有语音引擎,可在设置——》语言——》首选引擎进行选择。
具体可参考这篇csdn博客:https://blog.csdn.net/yingchengyou/article/details/79591954

我手机是荣耀10,内置有讯飞语音引擎,其他两个可以在上面网址下载到手机安装。
语音引擎
点击科大讯飞 !可选择发音人,内置语言引擎和讯飞的中英文只有女声,而度秘的在我手机选择不了,估计是版本问题吧。

在这里插入图片描述

Android的TextToSpeech类文档可参考这篇csdn博客:https://blog.csdn.net/qq_26971803/article/details/51176592
Android原生TTS类——TextToSpeech使用方法非常简单。
1.实例化 private TextToSpeech textToSpeech = new TextToSpeech(this, this);
2.重写onInit方法,进行设置语言进行初始化 int result = textToSpeech.setLanguage(Locale.CHINA);
3.设置tts参数textToSpeech.setPitch(1.4f);// 设置音调,1.0是常规
textToSpeech.setSpeechRate(1.2f);//设定语速,1.0正常语速
4.合成并播放 textToSpeech.speak(et_input.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
5.释放资源 textToSpeech.stop(); textToSpeech.shutdown();

该demo缺陷:未实现暂停,恢复播放功能。TextToSpeech未提供暂停,恢复播放方法,如果想实现的话,可以用synthesizeToFile方法保存音频文件,再用MediaPlayer对音频文件进行操作。

具体代码如下:

import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import java.util.Locale;public class MainActivity extends AppCompatActivity implements View.OnClickListener, TextToSpeech.OnInitListener {private EditText et_input;private Button bt_start;private Button bt_pause;private Button bt_resume;private TextToSpeech textToSpeech;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (textToSpeech==null){textToSpeech = new TextToSpeech(this, this);}initView();}private void ttsParam() {textToSpeech.setPitch(1.4f);// 设置音调,,1.0是常规textToSpeech.setSpeechRate(1.2f);//设定语速,1.0正常语速}private void initView() {et_input = findViewById(R.id.et_input);bt_start = findViewById(R.id.bt_start);bt_pause = findViewById(R.id.bt_pause);bt_resume = findViewById(R.id.bt_resume);bt_start.setOnClickListener(this);bt_pause.setOnClickListener(this);bt_resume.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_start:textToSpeech.speak(et_input.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);break;case R.id.bt_pause:Toast.makeText(this, "未实现", Toast.LENGTH_SHORT).show();break;case R.id.bt_resume:Toast.makeText(this, "未实现", Toast.LENGTH_SHORT).show();break;}}@Overridepublic void onInit(int status) {if (status == TextToSpeech.SUCCESS) {//初始化tts引擎int result = textToSpeech.setLanguage(Locale.CHINA);//设置参数ttsParam();if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {Toast.makeText(this, "语音包丢失或语音不支持", Toast.LENGTH_SHORT).show();}}}@Overrideprotected void onDestroy() {if (textToSpeech!=null){//释放资源textToSpeech.stop();textToSpeech.shutdown();}super.onDestroy();}
}

xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.nativetts.MainActivity"><EditTextandroid:id="@+id/et_input"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="input"android:text="识别成功,识别失败,欢迎光临,Recognition success,Recognition failure,Welcome" /><Buttonandroid:id="@+id/bt_start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开始播放" /><Buttonandroid:id="@+id/bt_pause"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="暂停播放" /><Buttonandroid:id="@+id/bt_resume"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="恢复播放" /></LinearLayout>

github:https://github.com/sunfusong/NativeTTS


http://www.ppmy.cn/news/806275.html

相关文章

利用正则表达式改善TTS听书效果

最近一直在用 TTS Server 来听书&#xff0c;这个APP的语音很厉害&#xff0c;可以设置两种不同的声音&#xff0c;分别对应【旁白】和【对话】&#xff0c;听书的时候很有感觉。 在最近的一次听书时发现&#xff0c;它用【双引号“”】来区分【对话】的。 这样&#xff0c;出…

语音合成 - TTS pyttsx3

目录 1. 简单介绍 2. 代码示例 1. 简单介绍 pyttsx3 PyPIText to Speech (TTS) library for Python 2 and 3. Works without internet connection or delay. Supports multiple TTS engines, including Sapi5, nsss, and espeak.https://pypi.org/project/pyttsx3/pyttsx3 是…

C#调用TTS语音

运行界面如下图 代码如下 卡界面运行 private void button2_Click(object sender, EventArgs e){//https://developer.aliyun.com/article/264926#:~:text%E5%8E%9F%E6%96%87%3A%20C%23%E8%AF%AD%E9%9F%B3%E6%9C%97%E8%AF%BB%E6%96%87%E6%9C%AC%20%E2%80%94%20TTS%E7%9A%84%E5…

android tts 语音合成

最近公司需求 制作语音提醒功能&#xff0c; 确保设备上又合成语音的引擎 我用的是 谷歌文字转语音引擎-google_18489_20160603.apk 注意 有些设备可能已经默认设置完成&#xff0c;可以先使用demo测试一下&#xff0c;播报失败再进行设置 设置引擎的方法如下 1、安装 谷…

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

TTS 是什么&#xff1f; TTS 是 Text To Speech 的缩写&#xff0c;即“从文本到语音”&#xff0c;是人机对话的一部分&#xff0c;让机器能够说话。 TTS 技术对文本文件进行实时转换&#xff0c;转换时间之短可以秒计算。 TTS 不仅能帮助有视觉障碍的人阅读计算机上的信息…

edge-tts微软文本转语音库

Edge-TTS是一个Python库,比较好用&#xff0c;直接pip安装。 pip install edge-tts 输入edge-tts&#xff0c;输出提示信息&#xff0c;安装完成。 usage: edge-tts [-h] [-t TEXT] [-f FILE] [-v VOICE] [-l] [--rate RATE] [--volume VOLUME] [-O OVERLAPPING][--write-me…

语音合成 - TTS gTTS

目录 1. 简单介绍 2. 代码示例 1. 简单介绍 https://gtts.readthedocs.io/en/latest/https://gtts.readthedocs.io/en/latest/ gTTS 是基于 Python 的文本转语音库&#xff0c;用于语音合成。 2. 代码示例 安装&#xff1a; pip install gTTS Python: from gtts import…

语音合成TTS

一、核心概念 1、TTS&#xff08;Text-To-Speech&#xff0c;从文本到语音&#xff09; 我们比较熟悉的ASR&#xff08;Automatic Speech Recognition&#xff09;&#xff0c;是将声音转化为文字&#xff0c;可类比于人类的耳朵。 而TTS是将文字转化为声音&#xff08;朗读出…