添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

目前文字转语音用的最多的是第三方厂商科大讯飞,不过需要收费。google也有离线文字转语音sdk,支持中文,发音也很好,使用免费的它不更香么!下边介绍具体使用步骤:

一、下载并设置Google文字转语音引擎

首先下载Google文字转语音引擎并安装。安装完成后在设置–>辅助功能–>无障碍–>文字转语音输出中将Google 文字转语音引擎设置为默认语音引擎。点击Google语音引擎设置,在引擎设置页面联网安装所需要的语音数据包。

下图为引擎设置页面:
下图为引擎语音数据下载页面:
下图为google语音引擎应用详情页面

二、文字转语音编码实现

代码比较简单,就不讲解了,有需要的直接粘贴使用吧。

activity_main.xml

<?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:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/content_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingStart="20dp"
        android:paddingTop="10dp"
        android:paddingEnd="20dp"
        android:paddingBottom="10dp"
        android:text="我是需要转换为语音的文本" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="startSpeak"
        android:text="开始转换" />
</LinearLayout>

MainActivity.java

package com.furong.googletts;
import android.speech.tts.TextToSpeech;
import android.speech.tts.UtteranceProgressListener;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.util.HashMap;
import java.util.Locale;
import java.util.Random;
public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener {
    private TextView speechText;
    private TextToSpeech tts;
    private HashMap<String, String> params;
    private String mostRecentUtteranceID;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        speechText = findViewById(R.id.content_text);
        //Initialize TTS
        tts = new TextToSpeech(this, this);
        //Change the tone and speed to change the sound effect
        tts.setPitch(0.9f);
        tts.setSpeechRate(1.0f);
        //Set unique utterance ID for each utterance
        mostRecentUtteranceID = (new Random().nextInt() % 9999999) + "";
        //Set params
        //This method will work for more devices: API 19+
        params = new HashMap<>();
        params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, mostRecentUtteranceID);
    public void startSpeak(View view) {
        if (tts != null && !tts.isSpeaking()) {
         int code = tts.speak(speechText.getText().toString(), TextToSpeech.QUEUE_FLUSH, params);
         if (code != SUCCESS) {
       			//do something
    @Override
    public void onInit(int status) {
        //Is TTS initialized successfully
        if (status == TextToSpeech.SUCCESS) {
            if (tts.getEngines().size() <= 0) {
                Toast.makeText(MainActivity.this, "Please install the voice engine", Toast.LENGTH_SHORT).show();
                return;
            //The default language is Chinese
            int result = tts.setLanguage(Locale.CHINESE);
            if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                Toast.makeText(MainActivity.this, "Chinese is not supported", Toast.LENGTH_SHORT).show();
                //Set to English when Chinese is not supported
                tts.setLanguage(Locale.US);
            //Set voice to text progress monitoring
            tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
                @Override
                public void onStart(String utteranceId) {
                @Override
                public void onDone(String utteranceId) {
                    // only respond to the most recent utterance
                    if (!utteranceId.equals(mostRecentUtteranceID)) {
                        Log.i("MainActivity", "onDone() blocked: utterance ID mismatch.");
                        return;
                    boolean wasCalledFromBackgroundThread = (Thread.currentThread().getId() != 1);
                    Log.i("MainActivity", "was onDone() called on a background thread? : " + wasCalledFromBackgroundThread);
                    // for demonstration only... avoid references to
                    // MainActivity (unless you use a WeakReference)
                    // inside the onDone() method, as it
                    // can cause a memory leak.
                    runOnUiThread(() -> {
                        //toast will not work if called from a background thread
                        Toast.makeText(MainActivity.this, "onDone working.", Toast.LENGTH_SHORT).show();
                @Override
                public void onError(String utteranceId) {

选择语音引擎时也可以在无障碍中选一个手机自带的支持中文的语音引擎(非必须 google引擎),在选择引擎后先使用手机自带的引擎发音测试测试下是否可以正常中文发音,测试成功后使用以上代码即可进行文字转语音播报的开发。

google语音引擎链接: https://pan.baidu.com/s/1J8HLhPfzKc8M73omHnIdMw 提取码: mm25
在使用语音引擎过程中有什么问题欢迎留言咨询~
目前文字转语音用的最多的是第三方服务科大讯飞,不过需要收费。google也有离线文字转语音sdk,支持中文,发音也很好,使用免费的它不香吗?下边介绍具体使用步骤:一、下载并设置Google文字转语音引擎首先下载Google文字转语音引擎并安装。安装完成后在设置–&gt;辅助功能–&gt;无障碍–&gt;文字转语音输出中将Google 文字转语音引擎设置为默认语音引擎。点击Google语音引擎设置,在引擎设置页面联网安装所需要的语音数据包。二、文字转语音编码实现代码比较简单,就不讲解了,有需要的
之前使用百度的语音合成 sdk做了个简单的tts,但是它不是真正的免费和纯离线的,所以在查阅相关资料后,使用Android的原生TTS ,因为它不支持中文,需要借助其他语音引擎可实现纯离线 免费的TTSAndroid原生的TTS是不支持中文合成的,需要借助其他的语音引擎(apk安装包),比如科大讯飞语音引擎3.0,度秘语音引擎3.0以及新版手机基本都内置有语音引擎,可在设置——》语言——》首选...
微软的文字语音TTS)是一种技术,它能够将文字自动换为可听的声音。通过该技术,用户可以使用计算机生成的语音来代替阅读书面文字,从而提供更加智能化和便捷的用户体验。 微软的TTS技术基于深度学习和人工智能技术,通过将文字化为声音,实现了计算机的语音输出能力。该技术能够自动识别并模拟人类语音,使得听者能够以自然、流畅的方式理解和接受信息。微软的TTS系统还支持多种语言和发音风格,可以根据用户的需求进行定制。 微软的TTS技术在多个领域有广泛的应用。首先,它在智能助理和虚拟代理人中被广泛使用。通过将文字指令换为语音输出,用户能够更加方便地与智能设备进行交互。其次,TTS技术在无障碍辅助功能和辅助学习中也扮演重要的角色。对于那些有阅读障碍的人来说,使用TTS技术能够帮助他们更好地获取信息。此外,TTS技术在游戏、教育、娱乐等领域也有广泛应用。 总之,微软的文字语音TTS)技术能够将文字自动换为可听的声音,在多个领域发挥着重要的作用。它为用户提供了便捷的语音交互方式,并且在无障碍辅助功能和辅助学习中起到了积极的作用。随着技术的不断发展,我们可以期待微软的TTS技术会有更加广泛的应用和进一步的改进。