为啥我在使用安卓语音sdk时,用着用着没声了
操真123晴人 发布于2018-12 浏览:1619 回复:1
1
收藏

      我用百度语音合成的目的是在项目中起到一个语音提示的作用,原先集成着都ok的,用着也丝毫没有问题,因为是免费使用而且调用次数是无限,QPS也是100次。经检查,代码无丝毫改动,总体流程还是   1  拿到创建平台应用得到的那些信息  2   初始化    参数配置     4  调用合成方法并进行播放   ,前几天ok的,今天播放不出来,经debug断点后得知确确实实有执行到 4。以下我本人自行封装的util工具类,望指点

package com.qkbnx.driver.custombus.common.utils.voice;

import android.content.Context;

import com.baidu.tts.client.SpeechSynthesizer;
import com.baidu.tts.client.SpeechSynthesizerListener;
import com.baidu.tts.client.TtsMode;
import com.qkbnx.driver.custombus.common.utils.OfflineResource;
import com.qkbnx.driver.custombus.common.utils.utils.SDCardUtils;

import java.io.File;
import java.io.IOException;

/**
 * 语音合成工具
 */

public class SpeakUtil {
    public static final String DEFAULT_SPEED = "6";
    
    private static SpeakUtil speakUtil;
    private static SpeechSynthesizer mSpeechSynthesizer;


    /**
     * 获取单一实例
     * @return
     */
    public synchronized  static SpeakUtil getInstance(){
        if(speakUtil == null){
            speakUtil = new SpeakUtil();
        }
        return speakUtil;
    }


    /**
     * 初始化工具
     * @param context
     * @param appId
     * @param appKey
     * @param appSecret
     */
    public static void initSpeak(Context context , String appId , String appKey , String appSecret){
        if(mSpeechSynthesizer == null){
            mSpeechSynthesizer = SpeechSynthesizer.getInstance();
        }
        mSpeechSynthesizer.setContext(context);
        mSpeechSynthesizer.setAppId(appId);
        mSpeechSynthesizer.setApiKey(appKey , appSecret);
        mSpeechSynthesizer.auth(TtsMode.MIX);
        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER , "0");
        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME , "15");
        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED , "6");
        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH , "4");
        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE , SpeechSynthesizer.MIX_MODE_HIGH_SPEED_NETWORK);
//        OfflineResource offlineResource = createOfflineResource(OfflineResource.VOICE_MALE , context);
//        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE , offlineResource.getTextFilename());
//        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE , offlineResource.getModelFilename());
        mSpeechSynthesizer.initTts(TtsMode.MIX);
        
    }


    protected static OfflineResource createOfflineResource(String voiceType, Context context) {
        OfflineResource offlineResource = null;
        try {
            offlineResource = new OfflineResource(context, voiceType);
        } catch (IOException e) {
            // IO 错误自行处理
            e.printStackTrace();
//            toPrint("【error】:copy files from assets failed." + e.getMessage());
        }
        return offlineResource;
    }
   


    /**
     * 设置监听回调
     * @param speechSynthesizer
     */
    public void setSpeechSynthesizer(SpeechSynthesizerListener speechSynthesizer){
        mSpeechSynthesizer.setSpeechSynthesizerListener(speechSynthesizer);
    }


//    /**
//     * 如需改变语速,则先调用此方法再调用speak方法;
//     * @param speedValue
//     */
//    public void setSpeed(String speedValue){
//        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED , speedValue);
//    }
    

    /**
     * 合成完毕后立即发出语音
     * @param content
     */
    public void speak(String content){
        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED , DEFAULT_SPEED);
        mSpeechSynthesizer.speak(content);
    }


    /**
     * 可设置语速的发音
     * @param content
     * @param speed
     */
    public void speak(String content , String speed){
        mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED , speed);
        mSpeechSynthesizer.speak(content);
    }


    /**
     * 页面退出时销毁mSpeechSynthesizer对象
     */
    public void releaseSpeak(){
        if(mSpeechSynthesizer != null){
            mSpeechSynthesizer.release();
            mSpeechSynthesizer = null;
        }
    }
    
    
}
收藏
点赞
1
个赞
共1条回复 最后由用户已被禁言回复于2022-04
#2fujiayi1984回复于2019-01

具体报什么错?可以测试官方demo,看下demo中的封装

0
TOP
切换版块