美文网首页iOS开发之笔记摘录
iOS第三方之讯飞语音

iOS第三方之讯飞语音

作者: 平安喜乐698 | 来源:发表于2017-08-30 14:43 被阅读8677次
目录
    1. 语音听写

简介

科大讯飞MSC(Mobile Speech Client,移动语音终端)

语音合成
    将一段文字转换为成语音(可设置音色、语速和语调)
语音听写
    将一段语音转换成文本
语音识别
    判断用户所说的内容是否与预定义的语法相符合
语义理解AIUI
    在语音听写基础上,分析理解用户的说话意图,返回结构化的指令信息(在AIUI开放平台定义专属的问答格式)。
语音评测
    通过智能语音技术自动对发音水平进行评价
语音唤醒
    设备(手机、玩具、家电等)在休眠(或锁屏)状态下也能检测到用户的声音
人脸识别    
    单人脸验证、单声纹验证以及人脸+声纹的融合验证方式
1. 语音听写

集成

第一步: 
    科大讯飞开放平台(http://www.xfyun.cn)申请应用获取AppID,并下载SDK
第二步: 
导入iflyMSC.framework,以及依赖的系统库:
  iflyMSC.framework             必要  讯飞开放平台静态库。
  libz.tbd                      必要  用于压缩、加密算法。
  AVFoundation.framework            必要  用于系统录音和播放 。
  SystemConfiguration.framework 系统库 用于系统设置。
  Foundation.framework          必要  基本库。
  CoreTelephoney.framework      必要  用于电话相关操作。
  AudioToolbox.framework            必要  用于系统录音和播放。
  UIKit.framework               必要  用于界面显示。
  CoreLocation.framework        必要  用于定位。
  Contacts.framework            必要  用于联系人。
  AddressBook.framework             必要  用于联系人。
  QuartzCore.framework          必要  用于界面显示。
  CoreGraphics.framework        必要  用于界面显示。
  libc++.tbd        离线识别,Aiui必要 用于支持C++。
  Libicucore.tbd            Aiui必要  系统正则库。

plist文件中添加权限
  麦克风位置联系人权限
  <key>NSMicrophoneUsageDescription</key>
  <string></string>
  <key>NSLocationUsageDescription</key>
  <string></string>
  <key>NSLocationAlwaysUsageDescription</key>
  <string></string>
  <key>NSContactsUsageDescription</key>
  <string></string>

bitcode
在Xcode 7,8默认开启了Bitcode, MSC不支持,关闭Bitcode(Build Settings中)


第三步:
AppDele +
    初始化(异步)
    NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@", @"YourAppid"];
    [IFlySpeechUtility createUtility:initString];
/* 可选
    // 设置log级别
    [IFlySetting setLogFile:LVL_ALL];
    // 控制台是否输出log
    [IFlySetting showLogcat:YES];
    // log存储路径
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachePath = [paths objectAtIndex:0];
    [IFlySetting setLogFilePath:cachePath];
*/
#import <iflyMSC/iflyMSC.h>
#import "IATConfig.h"

<IFlySpeechRecognizerDelegate>
@property (nonatomic, strong) IFlySpeechRecognizer *iFlySpeechRecognizer;


    // 1. 初始化讯飞语音听写
    if (!_iFlySpeechRecognizer) {
        // 创建听写对象
        _iFlySpeechRecognizer = [IFlySpeechRecognizer sharedInstance];
        _iFlySpeechRecognizer.delegate = self;
        // ?
        [_iFlySpeechRecognizer setParameter:@"" forKey: [IFlySpeechConstant PARAMS]];
        // 设置听写模式
        [_iFlySpeechRecognizer setParameter:@"iat" forKey:[IFlySpeechConstant IFLY_DOMAIN]];
        
        
        // 设置(直接从设置文件中修改数据)
        IATConfig *instance = [IATConfig sharedInstance];
        // 设置最长录音时间
        [_iFlySpeechRecognizer setParameter:instance.speechTimeout forKey:[IFlySpeechConstant SPEECH_TIMEOUT]];
        // 设置说完后多长时间会停止识别
        [_iFlySpeechRecognizer setParameter:instance.vadEos forKey: [IFlySpeechConstant VAD_EOS]];
        // 设置多长时间不说话或者是未检测到语音 则会停止识别
        [_iFlySpeechRecognizer setParameter:instance.vadBos forKey: [IFlySpeechConstant VAD_BOS]];
        // 网络等待时间
        [_iFlySpeechRecognizer setParameter:@"20000" forKey:[IFlySpeechConstant NET_TIMEOUT]];
        // 设置采样率,推荐使用16K
        [_iFlySpeechRecognizer setParameter:instance.sampleRate forKey:[IFlySpeechConstant SAMPLE_RATE]];
        if ([instance.language isEqualToString:[IATConfig chinese]]) {
            // 设置语言
            [_iFlySpeechRecognizer setParameter:instance.language forKey:[IFlySpeechConstant LANGUAGE]];
            // 设置方言
            [_iFlySpeechRecognizer setParameter:instance.accent forKey:[IFlySpeechConstant ACCENT]];
        }else if ([instance.language isEqualToString:[IATConfig english]]) {
            [_iFlySpeechRecognizer setParameter:instance.language forKey:[IFlySpeechConstant LANGUAGE]];
        }
        // 设置是否返回标点符号
        [_iFlySpeechRecognizer setParameter:instance.dot forKey:[IFlySpeechConstant ASR_PTT]];
    }


        // 2.启动识别服务
        [_iFlySpeechRecognizer startListening];
        // 3.停止识别服务
        // [_iFlySpeechRecognizer stopListening];


#pragma mark IFlySpeechRecognizerDelegate
// 4.识别到结果后回调
- (void)onResults:(NSArray *) results isLast:(BOOL)isLast{
    NSLog(@"%@",results);
    
    if(!results){
        return;
    }
    //
    NSString *resultStr=[[[results firstObject] allKeys]firstObject];
 
    NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:[resultStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
    
    NSArray *resultArr=dic[@"ws"];
    for(int i=0;i<resultArr.count;i++){
        NSDictionary *dicT=[resultArr[i][@"cw"]firstObject];
        [self.resultStr appendString:dicT[@"w"]];
    }

    if(isLast){
    if([self.resultStr containsString:@"xxxss"]){
    }
        
        self.resultStr=[NSMutableString new];
    }
}

// 出错后回调
- (void)onError:(IFlySpeechError *)error{
    NSLog(@"%@",error);
    
}
// 停止录音后回调
- (void)onEndOfSpeech{}
// 开始录音后回调
- (void)onBeginOfSpeech{}
// 音量改变后回调
- (void)onVolumeChanged: (int)volume{}
// 取消后回调
- (void)onCancel{}
IATConfig.h

#import <Foundation/Foundation.h>
@interface IATConfig : NSObject
+(IATConfig *)sharedInstance;
+(NSString *)mandarin;
+(NSString *)cantonese;
+(NSString *)sichuanese;
+(NSString *)chinese;
+(NSString *)english;
+(NSString *)lowSampleRate;
+(NSString *)highSampleRate;
+(NSString *)isDot;
+(NSString *)noDot;

@property (nonatomic, strong) NSString *speechTimeout;
@property (nonatomic, strong) NSString *vadEos;
@property (nonatomic, strong) NSString *vadBos;

@property (nonatomic, strong) NSString *language;
@property (nonatomic, strong) NSString *accent;

@property (nonatomic, strong) NSString *dot;
@property (nonatomic, strong) NSString *sampleRate;

@property (nonatomic) BOOL  isTranslate;//whether or not to open translation

@property (nonatomic, assign) BOOL haveView;
@property (nonatomic, strong) NSArray *accentIdentifer;
@property (nonatomic, strong) NSArray *accentNickName;
@end



IATConfig.m

#define PUTONGHUA   @"mandarin"
#define YUEYU       @"cantonese"
#define ENGLISH     @"en_us"
#define CHINESE     @"zh_cn";
#define SICHUANESE  @"lmz";

#import "IATConfig.h"
@implementation IATConfig
-(id)init {
    self  = [super init];
    if (self) {
        [self defaultSetting];
        return  self;
    }
    return nil;
}


+(IATConfig *)sharedInstance {
    static IATConfig  * instance = nil;
    static dispatch_once_t predict;
    dispatch_once(&predict, ^{
        instance = [[IATConfig alloc] init];
    });
    return instance;
}


-(void)defaultSetting {
    _speechTimeout = @"30000";
    _vadEos = @"3000";
    _vadBos = @"3000";
    _dot = @"0";
    _sampleRate = @"16000";
    _language = CHINESE;
    _accent = PUTONGHUA;
    _haveView = NO;
    _accentNickName = [[NSArray alloc] initWithObjects:NSLocalizedString(@"K_LangCant", nil), NSLocalizedString(@"K_LangChin", nil), NSLocalizedString(@"K_LangEng", nil), NSLocalizedString(@"K_LangSzec", nil), nil];
    
    _isTranslate = NO;
}


+(NSString *)mandarin {
    return PUTONGHUA;
}
+(NSString *)cantonese {
    return YUEYU;
}
+(NSString *)chinese {
    return CHINESE;
}
+(NSString *)english {
    return ENGLISH;
}
+(NSString *)sichuanese {
    return SICHUANESE;
}

+(NSString *)lowSampleRate {
    return @"8000";
}

+(NSString *)highSampleRate {
    return @"16000";
}

+(NSString *)isDot {
    return @"1";
}

+(NSString *)noDot {
    return @"0";
}
@end

相关文章

  • iOS 原生框架实现语音转文字/文字转语音

    iOS 要实现语音转文字,文字转语音的功能有很多选择,第三方平台比如百度、讯飞等都易实现,但是这些需要引入他们的 ...

  • 【OC功能】科大讯飞(一)环境搭建

    前言: 今天研究了一下第三方语音-科大讯飞 讯飞也算是国内比较老牌的语音平台了,这里就不多做解释了 主要功能实现:...

  • iOS---语音转文字

    iOS中实现语音转文字,除了一些第三方,如科大讯飞语音、百度语音等第三方的外(这种第三方的在其官方都有详细的教程,...

  • iOS-语音识别

    前言 语音识别现在已经在开发中越来越常见了,科大讯飞、百度等第三方库层出不穷,在这里简单的介绍一下iOS原生的语音...

  • 语音识别

    常用平台 科大讯飞 百度语音 这篇博客以科大讯飞为例 常用功能 语音识别 语音合成 集成步骤 在科大讯飞开发平台注...

  • iOS --语音听写(科大讯飞)

    现在语音服务越来越热,我们平时使用的很多软件都带有语音合成和识别功能,用起来也很方便。说到语音服务,Google和...

  • iOS 科大讯飞 语音合成

    1.概述 语音合成是将一段文字转换为成语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。 ...

  • Windows语音输入

    中文语音输入法推荐讯飞语音输入法,讯飞在ios等手机端已经很普及了,锤子手机也把它作为一个重要的卖点。在电脑端讯飞...

  • iOS 讯飞语音

    1、iOS使用讯飞语音-语音识别(最新版)

  • iOS原生语音识别使用的正确姿势

    语音识别技术这几年在移动App上的应用越来越广,各种第三方语音识别SDK也是层出不穷,例如科大讯飞、百度语音等,同...

网友评论

    本文标题:iOS第三方之讯飞语音

    本文链接:https://www.haomeiwen.com/subject/ycmedxtx.html