iOS 科大讯飞 语音合成

1.概述

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

第一步:获取appid

登录讯飞开放平台(https://passport.xfyun.cn/login),创建应用获取APPid

第二步:工程配置

讯飞不支持CocoaPods,只能手动导入配置文件,其中iflyMSC.framework是从官方网站获取(我的应用-点击应用-语音合成-在线语音合成(流式版)SDK下载)。将开发工具包中lib目录下的iflyMSC.framework添加到工程中。其他配置文件如下图:


配置文件图.png

第三步:设置Bitcode

MSC SDK暂时还不支持Bitcode,可以先临时关闭。后续MSC SDK支持Bitcode 时,会在讯飞开放平台上进行SDK版本更新,请关注。关闭此设置,只需在Targets - Build Settings 中搜索Bitcode 即可,找到相应选项,设置为NO。


Bitcode关闭.png

第四步:代码

1.AppDelegate 进行初始化
   //配置语音识别
    //Set log level
    /*!
     *  设置日志msc.log生成路径以及日志等级
     *
     *  | 日志打印等级             | 描述                               |
     *  |------------------------|-----------------------------------|
     *  | LVL_ALL                | 全部打印                           |
     *  | LVL_DETAIL             | 高,异常分析需要的级别                |
     *  | LVL_NORMAL             | 中,打印基本日志信息                  |
     *  | LVL_LOW                | 低,只打印主要日志信息                |
     *  | LVL_NONE               | 不打印                             |
     *
     *  @param level  -[in] 日志打印等级
     */
    [IFlySetting setLogFile:LVL_NONE];
    //Set whether to output log messages in Xcode console
    
    /*!
     *  是否打印控制台log
* 在软件发布时,建议关闭此log。 * * @param showLog -[in] YES,打印log;NO,不打印 */ [IFlySetting showLogcat:YES]; // 初始化讯飞应用 NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",kXunFeiKey]; [IFlySpeechUtility createUtility:initString];
2.播放代码
    IFlySpeechSynthesizer *   iFlySpeechSynthesizer = [IFlySpeechSynthesizer sharedInstance];
    self.iFlySpeechSynthesizer = iFlySpeechSynthesizer;
    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]];
    // 音频采样率【8000或16000】
    [iFlySpeechSynthesizer setParameter:@"16000" forKey:[IFlySpeechConstant SAMPLE_RATE]];
    // 保存音频路径(默认在Document目录下)
    [iFlySpeechSynthesizer setParameter:@"tts.pcm" forKey:[IFlySpeechConstant TTS_AUDIO_PATH]];
    //文本编码格式
    [iFlySpeechSynthesizer setParameter:@"unicode" forKey:[IFlySpeechConstant TEXT_ENCODING]];

   [self.iFlySpeechSynthesizer startSpeaking:@"北京-上海"];
#pragma mark --- 语音合成代理方法
/**
 * 合成缓冲进度【0-100】
 */
- (void)onBufferProgress:(int)progress message:(NSString *)msg {
    NSLog(@"合成缓冲进度:%d/100",progress);
}
/**
 * 合成开始
 */
- (void)onSpeakBegin {
    NSLog(@"合成播放开始!");
}

/**
 * 合成播放进度【0-100】
 */
- (void)onSpeakProgress:(int)progress beginPos:(int)beginPos endPos:(int)endPos {
    NSLog(@"合成播放进度:%d/100",progress);
    
}
/**
 * 合成结束
 */
- (void)onCompleted:(IFlySpeechError *)error {
    NSLog(@"合成结束!");
}

需要注意的是:
SDK与APPID是绑定的,一个APPID对应一个SDK。否则会报 报错误码10407。
新申请了新的APPID,Framework Search Path里要引用新SDK。

完整代码GitHub

你可能感兴趣的:(iOS 科大讯飞 语音合成)