百度语音合成 android,百度语音合成播放
Android ASR SDK 集成合成****DEMO****中
(一) 簡介:
本文針對遇見集成Android識別DEMO 有困難的用戶,以android合成SDK作為示例,給出的步驟。本文將集成ActivityRecog至官方android合成demo項目。android合成demo,可以將文本合成為音頻并且播放。我們添加的功能為:識別成功后,將識別出來的文本,合成之后播放出來。前提: 將官方demo的源代碼通過android studio在android真機上運行起來并且測試成功。Demo暫不支持模擬器。目標用戶:Android初學者或者想立即集成的用戶。|
Android Studio
|
3.0.1
|
|
官方Demo
|
3.0.6
|
| | |
|
測試機型
|
OPPO R7 - ColorOS 1.4
Android 4.3
|
(二) 官網新建一個應用
從合成demo中,我們得知項目的包名是com.baidu.tts.sample,定義在build.gradle中。在官網中新建一個應用,開通語音識別和語音合成能力。填寫包名為com.baidu.tts.sample。也可以使用本文示例的應用,測試成功上線前替換。
image.png
image.png
修改合成demo的appId appKey secretKey,并且測試是否有效****。
image.png
(三) 復制 AndroidManifest.xml
從官方demo的AndroidManifest.xml中找到如下信息,然后復制到您自己的同名文件中。
此處需要您復制a)權限 b) 官網申請的應用信息 c) SDK的Service
image.png
紫色的請替換成您自己的申請的應用信息。
紅色是您需要的添加的部分
(四) 識別初始化,復制識別jar庫
在 ActivityRecog中可以發現如下初始化代碼:image.png
我們暫時不需要離線的,在SynthActivity中添加如下代碼:image.png
這個時候MyRecognizer類沒有引用,識別的jar包也沒有。
將識別的app\libs\bdasr_V3_20171108_9800a2a.jar復制到合成的同名目錄。
復制缺少的JAVA類,解決編譯問題
image.png
image.png
注意此時底層****SO****庫還沒有集成,開始識別的時候會發生報錯。
(五) 集成,準備識別。
我們需要集成的邏輯是識別出文字后然后合成音頻播放。
因此第一步是識別出文字,第二步在識別的成功的回調中播放音頻。
先準備一個回調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中的“使用說明”按鈕復用下,改為”開始識別”按鈕
image.png
我們看見識別demo中是這樣開始識別的:myRecognizer.start(params);image.png
點擊“使用說明”按鈕,會發現如下保存。(還記得底層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"}
(六) 復制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"}
我們繼續修改項目:
復制官方demo****中 app\src\main\jniLibs 至項目的同名目錄,如果對android studio不熟悉,這一步可以在windows 資源管理器操作
由于原先合成demo項目已經有了5個架構目錄,因此此時只要合并即可。
image.png
如果假設,合成demo項目有6個架構目錄,然而合成只有5個,那么兩者目錄取交集,最終只留下同名的5個。如果假設,合成demo項目只有一個armeabi目錄,那么刪除識別項目額外的4個架構目錄,最終只留下同名的armeabi目錄。
(七) 測試識別及自定義參數:
啟動app,正常情況可以看見
public void onAsrFinalResult(String[] results, RecogResult recogResult) { super.onAsrFinalResult(results, recogResult);
String msg = "****識別成功:****" + results[0];
Log.i(TAG, msg);
}
這個方法被執行。
打開demo,這里以“在線識別”界面為例。 進入界面后,點擊“設置”按鈕。
經過一輪測試,準備選擇“保存音頻文件”及VAD時長2000ms作為在線識別的參數。
image.png
點擊開始錄音后,可以看見如下輸入參數:
image.png
這個json在logcat中也可以找到。
“vad.endpoint-timeout” 是定義在SpeechConstant中的常量。
項目中填寫同樣的參數,生成一樣的json。
image.png
(八) 集成合成播放
我們修改下TtsRecogListener中的回調image.png
正常的話,會聽見合成的女聲。
(九) 代碼下載
總結
以上是生活随笔為你收集整理的百度语音合成 android,百度语音合成播放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python--栈和队列
- 下一篇: 桌面六轴机械臂myCobot初体验