1. 程式人生 > >中國移動靈犀雲語音識別及合成SDK(iOS)使用指南

中國移動靈犀雲語音識別及合成SDK(iOS)使用指南

隨著智慧家居概念的火熱,語音互動這一新時代的人機互動方式再度掀起了熱潮。移動網際網路應用在設計開發時也紛紛考慮加入語音識別功能,帶給使用者除傳統鍵盤或觸控互動方式外的更便捷互動體驗。中國移動近日推出的“靈犀雲”,作為新一代的智慧語音雲平臺,正致力於為應用提供全方位的智慧語音能力服務,帶給使用者高效、準確、智慧的互動體驗。

基於中移動與語音行業領軍者科大訊飛的深度戰略合作背景,靈犀雲的核心技術源自科大訊飛。憑藉電信級網路及4G服務的優勢,靈犀雲在語音服務質量上具備領先優勢。這也是繼雙方此前面向廣大使用者推出靈犀語音助手APP後,中移動向廣大應用開發者們呈獻的一大利器,助力應用進入智慧互動時代。

這篇文章主要介紹利用靈犀雲SDK(iOS)實現語音識別和語音合成的方法:

1、註冊並登入中國移動開發者社群 http://dev.10086.cn(建議使用IE或IE核心瀏覽器)

2、登入成功後,點選下圖紅框指示的“申請能力應用”


3、點選“申請能力應用”按鈕


4、填寫您應用的基本資訊


5、語音服務AppID申請成功,之後點選下方按鈕下載SDK。


6、開始整合吧!

6.1 iOS 語音控制元件SDK 介面和體系結構


6.2 iOS 語音控制元件SDK 資源佔用描述


6.3  建立iOS工程
在XCode中建立你的工程,或者開啟已經建立的工程。

6.4 新增靜態庫

將開發工具包中lib目錄下的iflyMSC.framework新增到新建工程中(如下圖所示)。





6.5 新增framework

按下圖新增SDK所需要的iOS 庫


6.6 確認SDK的路徑


請確認上圖紅色部分的路徑能夠找到iflyMSC.framework。為了支援多人開發,建議雙擊紅色部分,把路徑改為相對路徑,例如像下圖所示。


注意:請把不必要的路徑刪除。例如更新了SDK後,新的SDK和舊的SDK不在同一路徑,請把舊路徑刪除,避免引用到舊的庫。對應整合SDK後發現編譯失敗,提示找不到標頭檔案,請先檢查這個路徑是否正確。

6.7 匯入標頭檔案

在你需要使用MSC服務的檔案中匯入相應的標頭檔案

例如:

//帶介面的語音識別控制元件

#import “iflyMSC/IFlyRecognizerViewDelegate.h” 
#import “iflyMSC/IFlyRecognizerView.h”
//不帶介面的語音識別控制元件
#import “iflyMSC/IFlySpeechRecognizerDelegate.h” 
#import “iflyMSC/IFlySpeechRecognizer.h”
//不帶介面的語音合成控制元件
#import “iflyMSC/IFlySpeechSynthesizerDelegate.h” 
#import “iflyMSC/IFlySpeechSynthesizer.h”


6.8 整合幫助文件到Xcode

開啟終端(terminal 或 iterm),cd到壓縮包的doc目錄,執行以下命令:

cp -R -f -a com.iflytek.documentation.IFlyMSC.docset 
~/Library/Developer/Shared/Documentation/DocSets/

然後執行命令
open ~/Library/Developer/Shared/Documentation/DocSets/
請核對文件的版本為最新下載的版本


開啟Xcode的幫助文件就可以看到已經整合的文件


7、在程式碼中使用開發工具包

7.1 初始化

建立使用者語音配置物件後才可以使用語音服務,建議在程式入口處呼叫。 

//將“12345678”替換成您申請的APPID,申請地址:http://dev.10086.cn/

NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@” 12345678”];
[IFlySpeechUtility createUtility:initString];

7.2 語音轉寫(帶介面示例)

使用示例如下圖所示:

//標頭檔案定義
//需要實現IFlyRecognizerViewDelegate,為識別會話的服務代理
@interface RecognizerViewController :  UIViewController<IFlyRecognizerViewDelegate>
{
IFlyRecognizerView
*_iflyRecognizerView;
}
//初始化語音識別控制元件
_iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.view.center];
_iflyRecognizerView.delegate =  self;
[_iflyRecognizerView setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
//asr_audio_path保存錄音檔名,如不再需要,設定value為nil表示取消,預設目錄是documents
[_iflyRecognizerView setParameter:@"asrview.pcm "  forKey:[IFlySpeechConstant
ASR_AUDIO_PATH]];
//啟動識別服務
[_iflyRecognizerView  start];
/*識別結果返回代理
@param resultArray識別結果
@ param isLast表示是否最後一次結果
*/
- (void)onResult: (NSArray *)resultArray isLast:(BOOL) isLast
{
}
/*識別會話錯誤返回代理
@ param    error錯誤碼
*/
- (void)onError: (IFlySpeechError *)  error
{
}

7.3 語音合成(不帶介面示例)

使用示例如下圖所示:

//標頭檔案定義
//需要實現IFlySpeechSynthesizerDelegate,為合成會話的服務代理
@interface TTSViewController :  UIViewController<IFlySpeechSynthesizerDelegate>
{
IFlySpeechSynthesizer
* _iFlySpeechSynthesizer;
}
//建立合成物件,為單例模式
_iFlySpeechSynthesizer = [IFlySpeechSynthesizer  sharedInstance];
_iFlySpeechSynthesizer.delegate =  self;
//設定語音合成的引數
//語速,取值範圍  0~100
[_iFlySpeechSynthesizer setParameter:@"50" forKey:[IFlySpeechConstant SPEED]];
//音量;取值範圍  0~100
[_iFlySpeechSynthesizer setParameter:@"50" forKey: [IFlySpeechConstant VOLUME]];
//發音人,預設為”xiaoyan”;可以設定的引數列表可參考個性化發音人列表
[_iFlySpeechSynthesizer setParameter:@" xiaoyan " forKey: [IFlySpeechConstant
VOICE_NAME]];
//音訊取樣率,目前支援的取樣率有  16000和     8000
[_iFlySpeechSynthesizer setParameter:@"8000" forKey: [IFlySpeechConstant SAMPLE_RATE]];
//asr_audio_path保存錄音檔案路徑,如不再需要,設定value為nil表示取消,預設目錄是
documents
[_iFlySpeechSynthesizer setParameter:@" tts.pcm" forKey: [IFlySpeechConstant
TTS_AUDIO_PATH]];
//啟動合成會話
[_iFlySpeechSynthesizer startSpeaking: @”你好,我是中國移動的小燕”];
//合成結束,此代理必須要實現
- (void) onCompleted:(IFlySpeechError *) error{}
//可選介面
- (void) onSpeakBegin{
//合成開始}
- (void) onBufferProgress:(int) progress message:(NSString *)msg{
//合成緩衝進度}
- (void) onSpeakProgress:(int) progress{
//合成播放進度}

7.4 語義示例

使用示例如下圖所示:

//注:如需使用語義功能,請先將需求直接傳送郵件到靈犀雲客服郵箱[email protected]進行
稽核配置
_iFlySpeechUnderstander = [IFlySpeechUnderstander  sharedInstance];
_iFlySpeechUnderstander.delegate =  self;
[_iFlySpeechUnderstander startListening]; //啟動識別服務
/*語義識別結果返回代理
@param resultArray識別結果
@ param isLast表示是否最後一次結果
*/
- (void) onResults:(NSArray *) results isLast:(BOOL) isLast
{
}
-(void) onError:(IFlySpeechError*) error
{

7.5 上傳聯絡人

使用示例如下圖所示:

//建立上傳物件
_uploader = [[IFlyDataUploader alloc] init];
//獲取聯絡人集合
IFlyContact *iFlyContact = [[IFlyContact alloc] init];
NSString *contactList = [iFlyContact  contact];
//設定引數
[_uploader setParameter:@"uup" forKey:@"subject"];
[_uploader setParameter:@"contact" forKey:@"dtt"];
//啟動上傳
[_uploader uploadDataWithCompletionHandler:^(NSString * grammerID, IFlySpeechError *error)
{
//接受返回的grammerID和error
[self onUploadFinished:grammerID error:error];
}name:@"contact" data:  contactList];
7.6 使用者詞表的上傳

使用示例如下圖所示:

//建立上傳物件
_uploader = [[IFlyDataUploader alloc] init];
//使用者詞表
#define USERWORDS       @"{\"userword\":[{\"name\":\"cmcc\",\"words\":[\"德國鹽豬手
\",\"1912酒吧街\",\"清蒸鱸魚\",\"挪威三文魚\",\"黃埔軍校\",\"橫沙牌坊\",\"中國移動\",\”
王小貳\”]}]}"
#define NAME @"userwords"
//生成使用者詞表物件
IFlyUserWords *iFlyUserWords = [[IFlyUserWords alloc] initWithJson:USERWORDS  ];
//設定引數
[_uploader setParameter:@"iat" forKey:@"sub"];
[_uploader setParameter:@"userword" forKey:@"dtt"];
[_uploader uploadDataWithCompletionHandler:^(NSString * grammerID,  IFlySpeechError
*error)
{
//接受返回的grammerID和error
[self onUploadFinished:grammerID error:error];

7.7 abnf語法上傳示例
// ABNF語法示例,可以說”北京到上海”
#define ABNFPARAM @”sub=asr,dtt=abnf”
#define ABNFDATA = “#ABNF 1.0 gb2312;
language  zh-CN;
mode voice;
root $main;
$main = $place1到$place2   ;
$place1 =北京    |武漢     |南京    |天津     |天京    |東京;
$place2 =上海    |合肥;”
//建立上傳物件
_uploader = [[IFlyDataUploader alloc] init];
//設定引數
[_uploader setParameter:@"asr" forKey:@"sub"];
[_uploader setParameter:@"abnf" forKey:@"dtt"];
//上傳 abnf語法
[_uploader uploadDataWithCompletionHandler:^(NSString * grammerID,  IFlySpeechError
*error)
{
//接受返回的grammerID和error
[self  setGrammerId:grammerID];
}name:ABNFNAME  data:ABNFDATA];



相關推薦

中國移動靈犀語音識別合成SDKiOS使用指南

隨著智慧家居概念的火熱,語音互動這一新時代的人機互動方式再度掀起了熱潮。移動網際網路應用在設計開發時也紛紛考慮加入語音識別功能,帶給使用者除傳統鍵盤或觸控互動方式外的更便捷互動體驗。中國移動近日推出的“靈犀雲”,作為新一代的智慧語音雲平臺,正致力於為應用提供全方位的智慧語

中國移動靈犀語音識別SDKandroid使用指南

隨著智慧家居概念的火熱,語音互動這一新時代的人機互動方式再度掀起了熱潮。移動網際網路應用在設計開發時也紛紛考慮加入語音識別功能,帶給使用者除傳統鍵盤或觸控互動方式外的更便捷互動體驗。中國移動近日推出的“靈犀雲”,作為新一代的智慧語音雲平臺,正致力於為應用提供全方位的智慧語音

移動網際網路APP測試流程測試點轉載 (二)

2.1安全測試 2.1.1軟體許可權 1)扣費風險:包括髮送簡訊、撥打電話、連線網路等 2)隱私洩露風險:包括訪問手機資訊、訪問聯絡人資訊等 3)對App的輸入有效性校驗、認證、授權、敏感資料儲存、資料加密等方面進行檢測 4)限制/允許使用手

語音識別模型優缺點簡介

2006年,Hinton提出深度學習網路,指出深度神經網路因為層數過多導致訓練引數多的問題可以利用逐層初始化解決。在工業界和學術界掀起了深度學習的浪潮,並在語音識別和影象處理領域取得了巨大成功。2011年微軟和谷歌在語音識別上採用DNN模型,將詞錯誤率降低20%-30%。這裡

百度實現語音識別語音合成

  第一步,點選人工智慧,語音合成,然後立即使用: 然後再應用列表裡面建立應用: 檢視技術文件,下面附上我的語音合成及識別的程式碼: from aip import AipSpeech """ 你的 APPID AK SK """ APP_ID = '1507967

ROS 教程3 機器人語音 語音識別理解合成控制 ASR NLU TTS

機器人語音 語音識別理解合成控制 ASR NLU TTS github 一、語音處理總體框架 1. 語音識別(ASR , Automatic Speech Recognition ) 2. 語義理解(NLU , Natural Language Understan

Unity整合百度語音識別合成--REST API

直接上unity的C#指令碼程式碼 百度語音識別 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Xml; using

tensorflow學習筆記四十:tensorflow語音識別 python音訊處理庫

tensorflow 語音識別 最近在做語音識別的專案,現在專案告一段落,就把最近碰到的東西做一個總結。 python中關於語音處理的庫 scipy.io.wavfile python_speech_features librosa : 讀取各種

【給你的產品加點料】中國移動數據語音與天貓精靈攜手打造打造優質智能生活

平臺 服務 特殊 進行 pen 家庭 語音 實驗室 天貓 “天貓精靈+數據語音”強強聯合天貓精靈是阿裏巴巴人工智能實驗室出品的一款智能語音助手,目前已實現的服務包括音頻播放、兒童教育、智能家居控制、聲紋購物等。最新款“天貓精靈CC&rdq

C# 10分鐘完成百度語音技術語音識別合成——入門篇

我們已經講了人臉識別(入門+進階)、圖片識別(入門)。下面是連結: C# 10分鐘完成百度人臉識別——入門篇 C# 30分鐘完成百度人臉識別——進階篇(文末附原始碼) C# 10分鐘完成百度圖片提取文字(文字識別)——入門篇 今天我們來盤一盤語音識別與合成。 PS:僅供瞭解參考,如需進一步瞭解請繼續研究。 我

深度學習實踐系列之--身份證上漢字數字識別系統的實現

手動 ear 常用 env 窗口 mic 文件下載 oot edr 前言: 本文章將記錄我利用深度學習方法實現身份證圖像的信息識別系統的實現過程,及學習到的心得與體會。本次實踐是我投身AI的初次系統化的付諸實踐,意義重大,讓自己成長許多。終於有空閑的時間,將其

3_百度語音合成TTS20181126

百度語音合成TTS 3 百度語音合成一段十秒左右的音訊的文字限制 3 百度語音合成一段十秒左右的音訊的文字限制 Baidu Online TTS 10秒語音文字限制: Test Text: 假如生活欺騙了你, 不要悲傷,不要心急!

人臉識別之人臉檢測--Haar特徵原理實現

本文主要由於OpenCV的haartraining程式,對haar特徵的補充及程式碼註釋。 Haar特徵的原理是什麼? Haar特徵分為三類:邊緣特徵、線性特徵、中心特徵和對角線特徵,組合成特徵模板。特徵模板內有白色和黑色兩種矩形,並定義該模板的特徵值為白色矩形畫

孤立詞語音識別之Vector Quantization向量量化

1、Vector Quantization介紹 Vector Quantization(VQ)是一種基於塊編碼規則的有損資料壓縮方法。在諸多領域有廣泛應用,比如語音和影象編碼或壓縮,語音識別等領域。VQ 的 主要優點在於可以減少計算量和儲存,缺點就是為了減少計算量和儲存

語音合成vocoder 概況

Question1: vocoder在合成中的角色??? 合成概況 語音合成主要有波形拼接和引數合成兩種方法[1]。 波形拼接方法 使用原始語音波形替代引數,合成的語音清晰自然,質量相比於引數合成方法要好。PSOLA(pitch

阿里騰訊伺服器購買配置流程lnmp或tomcat

1、伺服器註冊(目前阿里雲和騰訊雲的伺服器質量都不錯,可以根據自身情況購買) 如果購買騰訊雲伺服器,可領取騰訊雲伺服器代金券 2、安裝centos,並修改Linux主機名 如果是centos7以前的版本: 臨時生效修改 使用命令列修改 hostna

人臉識別之人臉檢測--人臉識別樣本製作訓練測試

閒得沒事,折騰下opencv 人臉識別,從樣本製作到評估。 1.直接copy opencv裡的原始碼,建立工程,新增opencv庫,可以直接cmake原始碼,但我之所以自己建立工程,是想多學習,並且降低與原始碼框架的耦合度。 這裡如果出現_imp__CreateToo

ros+科大迅飛語音包+圖靈機器人sdk下載測試

二、建立應用程式我這裡建立的應用名稱為KF三、下載SDK只有建立好應用才能下載SDK在ubuntu建立一個資料夾”SoftWare“,將下載的SDK解壓到該資料夾下$ mkdir SoftWare四、測試是否下載成功先下載mplayer播放器$ sudo apt-get in

阿里服務上Elasticsearch的安裝簡單使用

      在上篇文章中我們介紹了在阿里雲上進行Elasticsearch的安裝和執行,下面我們接著進行簡單的操作。      首先我們先要了解一下Elasticsearch中訪問資料的模式。為了能夠快

C++語音識別介面快速入門Microsoft Speech SDK——文字轉語音

C++語音識別介面快速入門(Microsoft Speech SDK) 尤其注意其中的寬字串轉化 #include <iostream> #include <sapi.h> //匯入語音標頭檔案 #include <string