Android文字转语音

简介: Android文字转语音

虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上。当用户不能查看设备时,则需要一些其他通信的方法。Android提供了强大的文字转语音Text-to-Speech,TTS API。使开发者能够在应用中添加语音通知和其他语音反馈功能,而不要求用户看着屏幕。


下面的代码展示了如何使用TTS API:

public class TextToSpeechDemo implements TextToSpeech.OnInitListener {
    private final TextToSpeech mTextToSpeech;//TTS对象
    private final ConcurrentLinkedQueue<String> mBufferedMessages;//消息队列
    private Context mContext;
    private boolean mIsReady;//标识符
    public TextToSpeechDemo(Context context){
        this.mContext=context;//获取上下文
        this.mBufferedMessages=new ConcurrentLinkedQueue<String>();//实例化队列
        this.mTextToSpeech=new TextToSpeech(this.mContext,this);//实例化TTS
    }
//初始化TTS引擎
    @Override
    public void onInit(int status) {
        Log.i("TextToSpeechDemo",String.valueOf(status));
        if(status==TextToSpeech.SUCCESS){
            int result = this.mTextToSpeech.setLanguage(Locale.CHINA);//设置识别语音为中文
            synchronized (this){
                this.mIsReady=true;//设置标识符为true
                for(String bufferedMessage : this.mBufferedMessages){
                    speakText(bufferedMessage);//读语音
                }
                this.mBufferedMessages.clear();//读完后清空队列
            }
        }
    }
//释放资源
    public void release(){
        synchronized (this){
            this.mTextToSpeech.shutdown();
            this.mIsReady=false;
        }
    }
//更新消息队列,或者读语音
    public void notifyNewMessage(String lanaugh){
        String message=lanaugh;
        synchronized (this){
            if(this.mIsReady){
                speakText(message);
            }else{
                this.mBufferedMessages.add(message);
            }
        }
    }
//读语音处理
    private void speakText(String message){
        Log.i("liyuanjinglyj",message);
        HashMap<String,String> params=new HashMap<String,String >();
        params.put(TextToSpeech.Engine.KEY_PARAM_STREAM,"STREAM_NOTIFICATION");//设置播放类型(音频流类型)
        this.mTextToSpeech.speak(message, TextToSpeech.QUEUE_ADD, params);//将这个发音任务添加当前任务之后
        this.mTextToSpeech.playSilence(100,TextToSpeech.QUEUE_ADD,params);//间隔多长时间
    }
}

  当然一般手机是不支持中文的可以百度下载讯飞TTS引擎后在测试。见最后附图。


由于TTS引擎的初始化是异步的,所以在执行实际的文字转语音之前需要把消息放到队列中。


可以给TTS引擎发送多个参数。前面展示了如何决定口语消息使用的音频流。在这种情况下,通知声音也使用相同的音频流。


最后,如果处理连续多个消息,最好在每个消息结束后暂停一会在播放下一个消息。这样做会清楚的告诉用户消息的结束和开始。

7.png

相关文章
|
Android开发
Android实现语音播报的两种方式
Android实现语音播报的两种方式
661 0
|
2月前
|
人工智能 Android开发 iOS开发
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
Shortcuts for Android(SFA)是一款安卓自动化工具,支持语音创建快捷指令,实现听歌、导航、发消息等操作。操作简单,提升效率,快来体验语音控制的便捷!
203 0
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
安卓声音克隆:让你的声音独一无二,探索个性化语音新世界!
在这个数字化飞速发展的时代,个性化已成为我们追求的重要目标之一。从独特的手机铃声到定制化的社交媒体内容,我们总希望能展现出与众不同的自我。那么,你是否想过在安卓设备上也能找到声音克隆的神奇功能,让你的
|
10月前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
861 4
|
数据处理 开发工具 数据安全/隐私保护
Android平台RTMP推送|轻量级RTSP服务|GB28181接入之文字、png图片水印的精进之路
本文探讨了Android平台上推流模块中添加文字与PNG水印的技术演进。自2015年起,为了满足应急指挥及安防领域的需求,逐步发展出三代水印技术:第一代为静态文字与图像水印;第二代实现了动态更新水印内容的能力,例如实时位置与时间信息;至第三代,则优化了数据传输效率,直接使用Bitmap对象传递水印数据至JNI层,减少了内存拷贝次数。这些迭代不仅提升了用户体验和技术效率,也体现了开发者追求极致与不断创新的精神。
146 7
|
JSON 自然语言处理 Java
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
1670 0
|
编解码 网络协议 Android开发
Android平台GB28181设备接入端如何支持跨网段语音对讲
如果你是音视频开发者亦或寻求这块技术方案的公司,在探讨这个问题之前,你可能网上看了太多关于语音广播和语音对讲相关的资料,大多文章认为语音对讲和语音广播无本质区别,实现思路也大同小异。
277 0
|
自然语言处理 算法 搜索推荐
Android文字匹配度算法
【5月更文挑战第15天】
156 1
|
算法 前端开发 Android开发
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题