用espeak 做Android TTS

本文介绍如何移植espeak到Android平台及其编译和应用。下文全部基于主机为 Ubuntu10.04.

前提:

1) 已经安装ndk


1、 编译espeak

下载espeak 源码:

如果没有安装git 先安装 ,很简单,sudo apt-get install git

终端运行: git clone https://github.com/rhdunn/espeak.git

然后,git checkout android,切换到Android分支


2、下载gradle

要求2.2以上版本,地址:https://downloads.gradle.org/distributions/gradle-2.9-bin.zip

然后解压。


3、安装 libtool 和wxWidgets

运行命令:

sudo apt-get install make autoconf automake libtool pkg-config
sudo apt-get install libwxgtk2.8-dev

4、 编译

在espeak下创建空文件,espeak.sh ,然后把下面内容复制进去,保存。

</pre><pre class="javascript" name="code">#!/bin/sh

SOURCE_DIR=$1
TARGET_DIR=$(pwd)
NDK_ROOT=/opt/android-18-toolchain/sysroot
build_one()
{
${SOURCE_DIR}/configure \
--srcdir=${SOURCE_DIR} \
--with-extdict-zh=yes \
--with-extdict-zhy=yes \
--prefix=${TARGET_DIR}/build \
--with-sysroot=${NDK_ROOT} \
--with-gradle=/mnt/work/git/Android/gradle-2.9-bin/gradle-2.9/bin/gradle
}

build_one

在运行脚本之前查看 PATH 变量是否已经包含了ndk的根目录,如果不在,那么需要加进去。命令:

export NDK_HOME=<path to ndk home>

export PATH=$PATH:$NDK_HOME

否则找不到ndk编译器
5、运行脚本

chmod 777 espeak.sh

./espeak.sh  .

注意./espeak.sh后面的点,表示当前目录


6、 运行make

7、 运行make install


完成。如果在编译打包成apk时失败也不要紧,一般可能是ndk版本低了或gradle 版本低了,或路径错误,在脚本里改下即可。

如果你用的是ndk 开发,那么只需要编译出了 libespeak.so 即大功告成。在 espeak/android/libs/armeabi-v7a/ 下。 espeak_lib.h 在espeak/src 下找.然后就可以直接用c语言来调用了。


8、 运用

初始化部分:

int rate=espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,"/sdcard",0);
    if(rate==-1){
        LOGE("ESPEAK  initialize failed");
    }else{
        smpl_rate=rate;
    }
    LOGI("espeak callback set");
    espeak_SetSynthCallback(TextToSpeech::TTS_Synth_CB);   // 设置回调函数
            LOGI("espeak voice");
    espeak_ERROR erro=espeak_SetVoiceByName("zh-f2");
     LOGI("espeak voice erro=%d",erro);
     espeak_VOICE *voice=espeak_GetCurrentVoice();

     LOGI("name=%s,languages=%s,iden=%s,gender=%d,age=%d",
          voice->name,voice->languages,voice->identifier,voice->gender,voice->age);
     voice->age=23;
     voice->gender=2;
     espeak_SetVoiceByProperties(voice);

text to speak 部分:

espeak_Synth((const void *)src_text,strlen(src_text),0,POS_SENTENCE,0,espeakCHARS_AUTO,NULL,this);
    espeak_ERROR erro=espeak_Synchronize();
    if(EE_OK !=erro){
        LOGE("synth erro=%d",erro);
    }


回调播放部分:播放器需要自己处理,回调函数只是产生了pcm 的数据

int TextToSpeech::TTS_Synth_CB(short *data, int len, espeak_EVENT *e)
{
    LOGI("synth len=%d",len);
    if(data==NULL)
        return 1;
    if(len>0){
        TextToSpeech *ttsHandle=static_cast<TextToSpeech*>(e->user_data);
        ttsHandle->handleVoiceData((void*)data,len*2
                                  );
    }
    return 0;

}

返回0表示继续,返回1表示结束。TTS_Synth_CB 函数在初始化时已经设置。

 



<think>好的,我需要帮助用户了解如何在安卓设备上使用或配置eSpeakTTS进行语音朗读。根据用户提供的引用,特别是引用[1]中提到需要安装eyes-free的TTSService Extended的apk,并将引擎设置为eSpeak来实现中文朗读,虽然效果可能较差。另外,引用[3]提到了PicoTTS作为安卓内置的轻量级引擎,但用户现在关注的是eSpeak。首先,我需要整理eSpeakTTS在安卓上的安装步骤。可能需要从第三方来源获取APK,因为GooglePlay可能没有官方版本。然后,配置系统设置中的TTS引擎,选择eSpeak作为默认。接着,可能需要下载语言包,特别是中文的支持。此外,用户可能需要调整参数,如语速和音调,但根据引用[1],效果可能不理想,需要提醒用户。还要考虑是否需要root权限,或者是否有其他工具如Termux或Magisk模块可以帮助配置。同时,引用[4]提到安卓开发中的语音技术,可能涉及开发者选项或ADB命令,但普通用户可能不需要这些。需要确保步骤清晰,分点说明,并引用相关引用来源。同时,生成相关问题,如解决安装问题、提升效果的方法、与其他引擎的比较等。最后,检查LaTeX格式是否正确,避免使用代码块,除非必要,但用户示例中使用了代码块,可能需要保留。</think>### 如何在安卓设备上配置 eSpeak TTS 进行语音朗读 #### 一、安装 eSpeak TTS 引擎 1. **获取安装包** - 需通过第三方渠道下载`TTS Service Extended`的APK文件(由eyes-free项目提供)[^1] - 建议从可信来源如[GitHub仓库](https://github.com/)获取最新版本 2. **安装APK** - 启用`未知来源`安装权限: $$设置 \rightarrow 安全 \rightarrow 未知来源$$ - 完成安装后,重启设备使引擎生效 #### 二、配置系统TTS引擎 1. **切换默认引擎** - 进入系统设置: $$设置 \rightarrow 系统 \rightarrow 语言与输入 \rightarrow 文字转语音(TTS)输出$$ - 在`首选引擎`中选择`eSpeak TTS`[^1] 2. **语言包管理** - 打开`eSpeak TTS`设置界面,点击`语言下载` - 选择`中文(zh_CN)`并下载语音数据(部分设备需手动添加语音路径) #### 三、参数调优与测试 1. **调整语音参数** - 在引擎设置中修改: - 语速:$rate=120$(默认值,范围$80-400$) - 音高:$pitch=50$(范围$0-100$) - 音量:$volume=100$(范围$0-200$) 2. **实时试听验证** - 使用系统自带的`试听`功能输入中文文本 - 示例测试文本:`"欢迎使用eSpeak中文语音合成"` - *注意:中文发音可能存在机械感强、断句不自然等问题[^1]* #### 四、开发者进阶配置(需ADB调试) 1. **通过命令行强制启用** ```bash adb shell settings put system tts_default_synth com.eyesfree.tts.android ``` 2. **查看支持的语言列表** ```bash adb shell dumpsys voiceinteraction | grep "Available languages" ``` --- ### eSpeak TTS 与其他引擎对比 | 引擎 | 中文支持 | 语音质量 | 资源占用 | |-----------------|----------|----------|----------| | eSpeak TTS | ✔️ | 机械音 | 低 | | Google TTS | ✔️ | 自然 | 中 | | Pico TTS | ✔️ | 一般 | 极低 | | 讯飞语记 | ✔️ | 优秀 | 高 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值