你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 【Demo】iOS平台上的訊飛語音識別語音合成開發

【Demo】iOS平台上的訊飛語音識別語音合成開發

編輯:IOS開發綜合

官方文檔:http://www.xfyun.cn/doccenter/IOS

目前開放的服務:

【Demo】IOS平台上的訊飛語音識別語音合成開發
【Demo】IOS平台上的訊飛語音識別語音合成開發

准備工作【Demo】iOS平台上的訊飛語音識別語音合成開發

需要到訊飛官網注冊一個開發賬號,注冊後登錄並創建一個新的應用,添加需要的服務(語音聽寫、語音合成等等),應用創建後可以得到一個Appid,這個要在開發中初始化訊飛語音應用中用到。%20

【Demo】iOS平台上的訊飛語音識別語音合成開發

工程中找到Targets->Build Phases->Link Binary With Libraries,添加下面的庫,注意iflyMSC.framework下載後一定要保證導入到工程目錄下,而不能只是個路徑引用否則會報錯。另外需要在Build Settings的Build Options中關閉BitCode。
【Demo】iOS平台上的訊飛語音識別語音合成開發
【Demo】iOS平台上的訊飛語音識別語音合成開發

在需要的地方引入訊飛語音庫頭文件,當然可以根據需要只引入某種服務的頭文件

#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初始化:
【Demo】iOS平台上的訊飛語音識別語音合成開發

//
//  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平台上的訊飛語音識別語音合成開發】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved