Android语音播报

这里写图片描述

目前随着技术的飞速发展,app制作的要求也是越来越多,在上一个项目中因为做的是类似电商类的app所以客服需要加一个能够随时监听客户下单情况,如何在有订购的单子时用语音提示且弹出订单的内容,然而当客户提出这个需求时,脑子里马上出现的便是百度语音,没错,就是它了,于是进百度语音的开发者平台申请appkey然后下载sdk照着文档一步一步的集成(对于集成第三方的一些功能,一个字,那就是“细心”),最后终于OK,测试了一下,一共有四种类型的声音,分别进行了试验,最后还是喜欢女声。好了,语音播报就算完成了,然而在接下来的日子里,项目有需要集成云信的聊天功能,又是一顿集成,然而在云信初始化的时候老是出错,查了半天是因为百度语音的云信初始化只能初始化一个,不然ANR,因为都是第三方的,所以,就想了其他办法,终于发现原来谷歌原生自带的语音播报,我的天啊,一顿翻墙查看。果然能发音了。下面是我自己写的的一个谷歌原生语音播报:

/**
 * Created by luweicheng on 2016/12/13.
 */

public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener {

    private static final int CHECK_TTS_ENGINE = 0;
    private TextToSpeech tts;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.speak).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            tts.speak("Hello World",TextToSpeech.QUEUE_FLUSH,null);
                Log.e(TAG, "onClick: 播放" );

            }
        });
        Intent intent = new Intent();
        intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(intent,CHECK_TTS_ENGINE);
    }

    private static final String TAG = "MainActivity";
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == CHECK_TTS_ENGINE){
            if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
                tts = new TextToSpeech(MainActivity.this,this);
                Log.e(TAG, "onActivityResult: 安装成功");
            }else {
                Intent installIntent = new Intent();
                installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installIntent);
                Log.e(TAG, "onActivityResult: 未安装去安装" );
            }

        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    public void onInit(int i) {
        if (i == TextToSpeech.SUCCESS) {
            if (tts.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE)
                Log.e(TAG, "onInit: SUCCESS" );
                tts.setLanguage(Locale.US);
        } else if (i == TextToSpeech.ERROR) {
            Log.e(TAG, "onInit: Error");
            Toast.makeText(this, "Sorry! Text To Speech failed...",
                    Toast.LENGTH_LONG).show();
        }


    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        tts.shutdown();//释放资源
        Log.e(TAG, "onDestroy: 释放资源" );
    }
}

是不是觉得比第三方集成方便多了,但是这里有个特别坑爹的地方,毕竟Android是人家老外的,所以语音只支持五种语言:English ,German , Italian ,French ,Spanish(英文,德语,意大利语,法语,西班牙语)五个音库.所以中文发音必须要借助其他的软件,或者引擎,如果想要转化成汉语这里有个网址点击查看如何安装中文发音引擎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值