日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百度语音合成 android,百度语音合成播放

發(fā)布時間:2024/3/24 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百度语音合成 android,百度语音合成播放 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android ASR SDK 集成合成****DEMO****中

(一) 簡介:

本文針對遇見集成Android識別DEMO 有困難的用戶,以android合成SDK作為示例,給出的步驟。本文將集成ActivityRecog至官方android合成demo項目。android合成demo,可以將文本合成為音頻并且播放。我們添加的功能為:識別成功后,將識別出來的文本,合成之后播放出來。前提: 將官方demo的源代碼通過android studio在android真機上運行起來并且測試成功。Demo暫不支持模擬器。目標用戶:Android初學(xué)者或者想立即集成的用戶。

|

Android Studio

|

3.0.1

|

|

官方Demo

|

3.0.6

|

| | |

|

測試機型

|

OPPO R7 - ColorOS 1.4

Android 4.3

|

(二) 官網(wǎng)新建一個應(yīng)用

從合成demo中,我們得知項目的包名是com.baidu.tts.sample,定義在build.gradle中。

在官網(wǎng)中新建一個應(yīng)用,開通語音識別和語音合成能力。填寫包名為com.baidu.tts.sample。也可以使用本文示例的應(yīng)用,測試成功上線前替換。

image.png

image.png

修改合成demo的appId appKey secretKey,并且測試是否有效****。

image.png

(三) 復(fù)制 AndroidManifest.xml

從官方demo的AndroidManifest.xml中找到如下信息,然后復(fù)制到您自己的同名文件中。

此處需要您復(fù)制a)權(quán)限 b) 官網(wǎng)申請的應(yīng)用信息 c) SDK的Service

image.png

紫色的請?zhí)鎿Q成您自己的申請的應(yīng)用信息。

紅色是您需要的添加的部分

(四) 識別初始化,復(fù)制識別jar庫

在 ActivityRecog中可以發(fā)現(xiàn)如下初始化代碼:

image.png

我們暫時不需要離線的,在SynthActivity中添加如下代碼:

image.png

這個時候MyRecognizer類沒有引用,識別的jar包也沒有。

將識別的app\libs\bdasr_V3_20171108_9800a2a.jar復(fù)制到合成的同名目錄。

復(fù)制缺少的JAVA類,解決編譯問題

image.png

image.png

注意此時底層****SO****庫還沒有集成,開始識別的時候會發(fā)生報錯。

(五) 集成,準備識別。

我們需要集成的邏輯是識別出文字后然后合成音頻播放。

因此第一步是識別出文字,第二步在識別的成功的回調(diào)中播放音頻。

先準備一個回調(diào)Listener:extends StatusRecogListener public class TtsRecogListener extends StatusRecogListener { private MySyntherizer synthesizer; private final static String TAG = "TtsRecogListener"; public TtsRecogListener(MySyntherizer synthesizer) { this.synthesizer = synthesizer;

} @Override public void onAsrFinalResult(String[] results, RecogResult recogResult) { super.onAsrFinalResult(results, recogResult);

String msg = "****識別成功:" + results[0];

Log.*i*(***TAG***, msg);

} @Override public void onAsrFinishError(int errorCode, int subErrorCode, String errorMessage, String descMessage, RecogResult recogResult) { super.onAsrFinishError(errorCode, subErrorCode, errorMessage, descMessage, recogResult);

String msg = "****錯誤碼是:" + errorCode;

Log.i(TAG, msg);

}

}

還記得之前的IRecogListener listener = null;么?

image.png

把合成demo中的“使用說明”按鈕復(fù)用下,改為”開始識別”按鈕

image.png

我們看見識別demo中是這樣開始識別的:myRecognizer.start(params);

image.png

點擊“使用說明”按鈕,會發(fā)現(xiàn)如下保存。(還記得底層so文件沒有復(fù)制么?)

{"sub_error":5001,"error":5,"origin_result":{"sub_error":5001,"error":5,"sn":"","desc":"Can not load so library"},"desc":"Can not load so library"}

(六) 復(fù)制jni庫的so文件

由于缺少so****文件,點擊開始后,有如下報錯:

:{"sub_error":5001,"error":5,"origin_result":{"sub_error":5001,"error":5,"sn":"","desc":"Can not load so library"},"desc":"Can not load so library"}

我們繼續(xù)修改項目:

復(fù)制官方demo****中 app\src\main\jniLibs 至項目的同名目錄,如果對android studio不熟悉,這一步可以在windows 資源管理器操作

由于原先合成demo項目已經(jīng)有了5個架構(gòu)目錄,因此此時只要合并即可。

image.png

如果假設(shè),合成demo項目有6個架構(gòu)目錄,然而合成只有5個,那么兩者目錄取交集,最終只留下同名的5個。如果假設(shè),合成demo項目只有一個armeabi目錄,那么刪除識別項目額外的4個架構(gòu)目錄,最終只留下同名的armeabi目錄。

(七) 測試識別及自定義參數(shù):

啟動app,正常情況可以看見

public void onAsrFinalResult(String[] results, RecogResult recogResult) { super.onAsrFinalResult(results, recogResult);

String msg = "****識別成功:****" + results[0];

Log.i(TAG, msg);

}

這個方法被執(zhí)行。

打開demo,這里以“在線識別”界面為例。 進入界面后,點擊“設(shè)置”按鈕。

經(jīng)過一輪測試,準備選擇“保存音頻文件”及VAD時長2000ms作為在線識別的參數(shù)。

image.png

點擊開始錄音后,可以看見如下輸入?yún)?shù):

image.png

這個json在logcat中也可以找到。

“vad.endpoint-timeout” 是定義在SpeechConstant中的常量。

項目中填寫同樣的參數(shù),生成一樣的json。

image.png

(八) 集成合成播放

我們修改下TtsRecogListener中的回調(diào)

image.png

正常的話,會聽見合成的女聲。

(九) 代碼下載

總結(jié)

以上是生活随笔為你收集整理的百度语音合成 android,百度语音合成播放的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。