官方文檔:http://www.xfyun.cn/doccenter/IOS
目前開放的服務:
需要到訊飛官網注冊一個開發賬號,注冊後登錄並創建一個新的應用,添加需要的服務(語音聽寫、語音合成等等),應用創建後可以得到一個Appid,這個要在開發中初始化訊飛語音應用中用到。%20
工程中找到Targets->Build Phases->Link Binary With Libraries,添加下面的庫,注意iflyMSC.framework下載後一定要保證導入到工程目錄下,而不能只是個路徑引用否則會報錯。另外需要在Build Settings的Build Options中關閉BitCode。
在需要的地方引入訊飛語音庫頭文件,當然可以根據需要只引入某種服務的頭文件
#import <iflyMSC/iflyMSC.h> // 引入訊飛語音庫
#ifndef MSC_IFlyMSC_h
#define MSC_IFlyMSC_h
#import "IFlyAudioSession.h"
#import "IFlyContact.h"
#import "IFlyDataUploader.h"
#import "IFlyDebugLog.h"
#import "IFlyISVDelegate.h"
#import "IFlyISVRecognizer.h"
#import "IFlyRecognizerView.h"
#import "IFlyRecognizerViewDelegate.h"
#import "IFlyResourceUtil.h"
#import "IFlySetting.h"
#import "IFlySpeechConstant.h"
#import "IFlySpeechError.h"
#import "IFlySpeechEvaLuator.h"
#import "IFlySpeechEvaLuatorDelegate.h"
#import "IFlySpeechEvent.h"
#import "IFlySpeechRecognizer.h"
#import "IFlySpeechRecognizerDelegate.h"
#import "IFlySpeechSynthesizer.h"
#import "IFlySpeechSynthesizerDelegate.h"
#import "IFlySpeechUnderstander.h"
#import "IFlySpeechUtility.h"
#import "IFlyTextUnderstander.h"
#import "IFlyUserWords.h"
#import "IFlyPcmRecorder.h"
#import "IFlyVoiceWakeuper.h"
#import "IFlyVoiceWakeuperDelegate.h"
#endif
使用Appid初始化訊飛應用,在應用啟動的地方使用Appid初始化語音應用,這裡放在了AppDelegate應用代理文件下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@"587f6174"];
[IFlySpeechUtility createUtility:initString];
return YES;
}
語音合成和語音測評示例
這裡因為要使用語音合成和測評功能所以先測試了這兩個,其他的類似,可參考官方文檔:
應用啟動後會有‘小燕’的聲音讀出:”Hello, this is xiaoyan!” 應用啟動後測評”Today is a sunny day!”的發音先要使用Appid初始化:
//
// ViewController.m
// XFDemo
//
// Created by Xinhou Jiang on 4/3/17.
// Copyright © 2017年 Xinhou Jiang. All rights reserved.
//
#import "ViewController.h"
#import <iflyMSC/iflyMSC.h> // 引入訊飛語音庫
@interface ViewController ()<IFlySpeechSynthesizerDelegate,IFlySpeechEvaLuatorDelegate> { // 語音代理協議
}
@property (nonatomic, strong)IFlySpeechSynthesizer *iFlySpeechSynthesizer; // 定義語音合成對象
@property (nonatomic, strong)IFlySpeechEvaluator *iFlySpeechEvaluator; // 定義語音測評對象
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 1.開始合成說話
//[self.iFlySpeechSynthesizer startSpeaking:@"Hello, this is xiaoyan!"];
// 2.開始語音測評
NSData *textData = [@"Today is a sunny day!" dataUsingEncoding:NSUTF8StringEncoding];
[self.iFlySpeechEvaluator startListening:textData params:nil];
}
#pragma -mark 語音合成
/**
* 懶加載getter方法
*/
- (IFlySpeechSynthesizer *)iFlySpeechSynthesizer {
if(!_iFlySpeechSynthesizer) {
// 初始化語音合成
_iFlySpeechSynthesizer = [IFlySpeechSynthesizer sharedInstance];
_iFlySpeechSynthesizer.delegate = self;
// 語速【0-100】
[_iFlySpeechSynthesizer setParameter:@"50" forKey:[IFlySpeechConstant SPEED]];
// 音量【0-100】
[_iFlySpeechSynthesizer setParameter:@"50" forKey:[IFlySpeechConstant VOLUME]];
// 發音人【小燕:xiaoyan;小宇:xiaoyu;凱瑟琳:catherine;亨利:henry;瑪麗:vimary;小研:vixy;小琪:vixq;小峰:vixf;小梅:vixl;小莉:vixq;小蓉(四川話):vixr;小芸:vixyun;小坤:vixk;小強:vixqa;小瑩:vixying;小新:vixx;楠楠:vinn;老孫:vils】
[_iFlySpeechSynthesizer setParameter:@"xiaoyan" forKey:[IFlySpeechConstant VOICE_NAME]];
// 音頻采樣率【8000或16000】
[_iFlySpeechSynthesizer setParameter:@"8000" forKey:[IFlySpeechConstant SAMPLE_RATE]];
// 保存音頻路徑(默認在Document目錄下)
[_iFlySpeechSynthesizer setParameter:@"tts.pcm" forKey:[IFlySpeechConstant TTS_AUDIO_PATH]];
}
return _iFlySpeechSynthesizer;
}
/**
* 合成結束
*/
- (void)onCompleted:(IFlySpeechError *)error {
NSLog(@"合成結束!");
}
/**
* 合成開始
*/
- (void)onSpeakBegin {
NSLog(@"合成開始!");
}
/**
* 合成緩沖進度【0-100】
*/
- (void)onBufferProgress:(int)progress message:(NSString *)msg {
NSLog(@"合成緩沖進度:%d/100",progress);
}
/**
* 合成播放進度【0-100】
*/
- (void)onSpeakProgress:(int)progress beginPos:(int)beginPos endPos:(int)endPos {
NSLog(@"合成播放進度:%d/100",progress);
}
#pragma -mark 語音測評
/**
* 懶加載getter方法
*/
- (IFlySpeechEvaluator *)iFlySpeechEvaluator {
if (!_iFlySpeechEvaluator) {
// 初始化語音測評
_iFlySpeechEvaluator = [IFlySpeechEvaluator sharedInstance];
_iFlySpeechEvaluator.delegate = self;
// 設置測評語種【中文:zh_cn,中文台灣:zh_tw,美英:en_us】
[_iFlySpeechEvaluator setParameter:@"en_us" forKey:[IFlySpeechConstant LANGUAGE]];
// 設置測評題型【read_syllable(英文評測不支持):單字;read_word:詞語;read_sentence:句子;read_chapter(待開放):篇章】
[_iFlySpeechEvaluator setParameter:@"read_sentence" forKey:[IFlySpeechConstant ISE_CATEGORY]];
// 設置試題編碼類型
[_iFlySpeechEvaluator setParameter:@"utf-8" forKey:[IFlySpeechConstant TEXT_ENCODING]];
// 設置前、後端點超時【0-10000(單位ms)】
[_iFlySpeechEvaluator setParameter:@"10000" forKey:[IFlySpeechConstant VAD_BOS]]; // 默認5000ms
[_iFlySpeechEvaluator setParameter:@"1000" forKey:[IFlySpeechConstant VAD_EOS]]; // 默認1800ms
// 設置錄音超時,設置成-1則無超時限制(單位:ms,默認30000)
[_iFlySpeechEvaluator setParameter:@"5000" forKey:[IFlySpeechConstant SPEECH_TIMEOUT]];
// 設置結果等級,不同等級對應不同的詳細程度【complete:完整 ;plain:簡單】
[_iFlySpeechEvaluator setParameter:@"" forKey:[IFlySpeechConstant ISE_RESULT_LEVEL]];
}
return _iFlySpeechEvaluator;
}
/**
* 開始說話回調
*/
- (void)onBeginOfSpeech {
NSLog(@"開始說話...");
}
/**
* 說話結束回調
*/
- (void)onEndOfSpeech {
NSLog(@"說話結束...");
}
/**
* 測評結果
*/
- (void)onResults:(NSData *)results isLast:(BOOL)isLast {
NSLog(@"測評結果:%@",results);
}
/**
* 出錯回調
*/
- (void)onError:(IFlySpeechError *)errorCode {
NSLog(@"語音測評出錯:%@",errorCode);
}
/**
* 音量變化回調
*/
- (void)onVolumeChanged:(int)volume buffer:(NSData *)buffer {
NSLog(@"音量變化...");
}
/**
* 取消
*/
- (void)onCancel {
NSLog(@"正在取消...");
}
@end
Demo 下載:https://github.com/jiangxh1992/XFSpeechDemo
以上就是【Demo】iOS平台上的訊飛語音識別語音合成開發的全文介紹,希望對您學習和使用ios應用開發有所幫助.【【Demo】iOS平台上的訊飛語音識別語音合成開發】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!