国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

訊飛語音之語音合成

2019-11-08 00:25:34
字體:
供稿:網(wǎng)友

因為一個項目的需要,開始接觸這個,我本身能力很有限,簡單的語音合成就花了我很長時間,現(xiàn)在跟大家分享一下代碼

第一步:

首先去訊飛語音官網(wǎng)注冊賬號,創(chuàng)建應(yīng)用,選擇你需要的服務(wù),下載相應(yīng)的SDK。

第二部:導(dǎo)入jar包和so文件

論壇上大多代碼是eclipse的,比較簡單,這里介紹一下Android Studio的導(dǎo)入方法:

1、首先,將左側(cè)的顯示改成PRoject視圖

2、將下載的訊飛語音包內(nèi) libs文件夾下,Msc.jar和armeabi分別按圖導(dǎo)入相應(yīng)的位置

        

Android Studio導(dǎo)入后的樣子

第三步:添加權(quán)限

在AndroidManifest中添加如下權(quán)限(有的好像用不到,個別我也不是很懂)

<!--連接網(wǎng)絡(luò)權(quán)限,用于執(zhí)行云端語音能力 -->    <uses-permission android:name="android.permission.INTERNET"/>    <!--獲取手機錄音機使用權(quán)限,聽寫、識別、語義理解需要用到此權(quán)限 -->    <uses-permission android:name="android.permission.RECORD_AUDIO"/>    <!--讀取網(wǎng)絡(luò)信息狀態(tài) -->    <uses-permission android:name="android.permission.access_NETWORK_STATE"/>    <!--獲取當(dāng)前wifi狀態(tài) -->    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    <!--允許程序改變網(wǎng)絡(luò)連接狀態(tài) -->    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    <!--讀取手機信息權(quán)限 -->    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>    <!--讀取聯(lián)系人權(quán)限,上傳聯(lián)系人需要用到此權(quán)限 -->    <uses-permission android:name="android.permission.READ_CONTACTS"/>    <!-- 讀寫SD卡權(quán)限-->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

第四步:Layout 文件

只想做一個簡單的例子,這里只寫一個按鈕,點擊時手機讀出預(yù)先設(shè)定好的文字

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.examlpe.google.speakdemo2.MainActivity">    <Button        android:id="@+id/bt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!" /></RelativeLayout>第五步:MainActivity

package com.examlpe.google.speakdemo2;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.iflytek.cloud.InitListener;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechSynthesizer;import com.iflytek.cloud.SpeechUtility;import com.iflytek.cloud.SynthesizerListener;public class MainActivity extends Activity implements View.OnClickListener {    Button speak;    private static final String APPID = "58aad20c";    private SpeechSynthesizer speechSynthesizer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        speak = (Button) findViewById(R.id.bt);        speak.setOnClickListener(this);        //創(chuàng)建語音配置對象,appid= 后面的字符串在訊飛語音我的應(yīng)用中找,每個應(yīng)用有特定的appid        SpeechUtility.createUtility(MainActivity.this,"appid=********");        //1.創(chuàng)建SpeechSynthesizer對象, 第二個參數(shù):本地合成時傳InitListener  ,可寫為null        speechSynthesizer = SpeechSynthesizer.createSynthesizer(MainActivity.this, null);        //語音合成參數(shù)設(shè)置,詳見《科大訊飛MSC API手冊(Android)》SpeechSynthesizer 類        speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//設(shè)置發(fā)音人        speechSynthesizer.setParameter(SpeechConstant.SPEED, "50");//設(shè)置語速        speechSynthesizer.setParameter(SpeechConstant.VOLUME, "80");//設(shè)置音量,范圍0~100    }    //本地合成時用到    /*private InitListener myInitListener = new InitListener() {        @Override        public void onInit(int code) {            Log.d("mySynthesiezer:", "InitListener init() code = " + code);        }    };*/    //合成監(jiān)聽器    private SynthesizerListener mListener = new SynthesizerListener(){        @Override        public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {            // TODO Auto-generated method stub            Toast.makeText(MainActivity.this, "合成bpro", Toast.LENGTH_LONG).show();        }        @Override        public void onCompleted(SpeechError error) {            // TODO Auto-generated method stub            if(error!=null)            {                Log.d("mySynthesiezer complete code:", error.getErrorCode()+"");            }            else            {                Log.d("mySynthesiezer complete code:", "0");            }            Toast.makeText(MainActivity.this, "合成完成", Toast.LENGTH_LONG).show();        }        @Override        public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {            // TODO Auto-generated method stub        }        @Override        public void onSpeakBegin() {            // TODO Auto-generated method stub        }        @Override        public void onSpeakPaused() {            // TODO Auto-generated method stub        }        @Override        public void onSpeakProgress(int arg0, int arg1, int arg2) {            // TODO Auto-generated method stub        }        @Override        public void onSpeakResumed() {            // TODO Auto-generated method stub        }    };    @Override    public void onClick(View v) {        if(v.getId() == R.id.bt){            //開始合成            speechSynthesizer.startSpeaking("this", mListener);            Log.d("mySynthesiezer start code:", "start");            Toast.makeText(MainActivity.this, "dianji", Toast.LENGTH_LONG).show();        }    }}

appid查找方法:

到此,一個簡單的例子就完成了,運行截圖就一個按鈕,沒什么可看的,就不放了,之后會打包源碼送上,有問題歡迎交流


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 保定市| 黄山市| 荔波县| 昌乐县| 德州市| 柏乡县| 抚宁县| 清徐县| 大同市| 墨江| 达尔| 石嘴山市| 定西市| 黑水县| 靖边县| 高清| 永平县| 建昌县| 习水县| 安阳市| 澄城县| 会同县| 从江县| 靖州| 定兴县| 武清区| 古交市| 临潭县| 临颍县| 安溪县| 崇礼县| 元阳县| 永吉县| 子长县| 麻城市| 苗栗市| 阜新市| 德兴市| 都江堰市| 延长县| 滨州市|