搜索
您的当前位置:首页正文

Android之讯飞语音-文字转语音

来源:知库网

一、描述

二、使用教程

一,登陆讯飞开发平台


二、创建一个应用


三、Sdk下载

选择好你需要的功能,有的免费的,这里就以在线语音合成作为示例。


Paste_Image.png
四、配置讯飞语音到AndroidStudio



(一)打开压缩包的内容,里面有个Lib,我们现在先进入lib

(二)复制arm64-v8a,armeanbi,armeabi-v7a存放到jniLibs目录中,把Msc.jar和Sunflower.jar存放到libs目录中。


需要复制的文件
存放位置,jniLibs Paste_Image.png

(三)添加需要的权限

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
五、讯飞语音使用说明



(一)初始化讯飞语音,可以在Application类中执行,把“appid=”后面替换上你在讯飞上创建的应用对应的Appid。

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SpeechUtility.createUtility(getApplicationContext(), "appid=YOU_APPID");
    }
}

(二)语音工具类,调用speakText(要播放的语音文本)方法即可播放语音,如还需要配置一些其他属性,可自行添加。

package com.example.junwen.myapplication;

import android.content.Context;
import android.os.Bundle;
import android.util.Log;

import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SynthesizerListener;

/**
 * 描述:语音播放工具类
 * 作者:卜俊文
 * 创建:2016/8/19 09:07
 * 
 */
public class AudioUtils {

    private static AudioUtils audioUtils;

    private SpeechSynthesizer mySynthesizer;

    public AudioUtils() {
    }

    /**
     * 描述:单例
     * 作者:卜俊文
     * 
     * 创建时间: 2016/8/19 14:38
     */
    public static AudioUtils getInstance() {
        if (audioUtils == null) {
            synchronized (AudioUtils.class) {
                if (audioUtils == null) {
                    audioUtils = new AudioUtils();
                }
            }
        }
        return audioUtils;
    }

    private InitListener myInitListener = new InitListener() {
        @Override
        public void onInit(int code) {
            Log.d("mySynthesiezer:", "InitListener init() code = " + code);
        }
    };


    /**
     * 描述:初始化语音配置
     * 作者:卜俊文
     * 
     * 创建时间: 2016/8/19 14:38
     */
    public void init(Context context) {
        //处理语音合成关键类
        mySynthesizer = SpeechSynthesizer.createSynthesizer(context, myInitListener);
        //设置发音人
        mySynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
        //设置音调
        mySynthesizer.setParameter(SpeechConstant.PITCH, "50");
        //设置音量
        mySynthesizer.setParameter(SpeechConstant.VOLUME, "50");

    }

    /**
     * 描述:根据传入的文本转换音频并播放
     * 作者:卜俊文
     * 
     * 创建时间: 2016/8/19 14:39
     */
    public void speakText(String content) {
        int code = mySynthesizer.startSpeaking(content, new SynthesizerListener() {
            @Override
            public void onSpeakBegin() {

            }

            @Override
            public void onBufferProgress(int i, int i1, int i2, String s) {

            }

            @Override
            public void onSpeakPaused() {

            }

            @Override
            public void onSpeakResumed() {

            }

            @Override
            public void onSpeakProgress(int i, int i1, int i2) {

            }

            @Override
            public void onCompleted(SpeechError speechError) {

            }

            @Override
            public void onEvent(int i, int i1, int i2, Bundle bundle) {

            }
        });
    }
}


(三)在MainActivity中直接调用方法播放语音,init方法也可以放在Aplication中初始化,自行封装。

  public void Speak(View view) {
        AudioUtils.getInstance().init(MainActivity.this); //初始化语音对象
        AudioUtils.getInstance().speakText("你好"); //播放语音
    }
六、示例Demo

三、注意事项

如果有遇到空指针的问题。
1 请检查一下你的初始化是否在Applicaiton中,Application类是否已经在清单文件注册了,没有初始化是会空指针的。
2 可以尝试在使用的时候再初始化,比如在MainActivtiy

AudioUtils.getInstance().init(MainActivity.this); //初始化语音对象
AudioUtils.getInstance().speakText("你好"); //播放语音

四、总结

这里总结了讯飞语音的使用说明,方便以后需要的时候,方便的查看。

欢迎关注我的微信公众号,分享更多技术文章。

Top