zoukankan      html  css  js  c++  java
  • iOS开发日记50-文本转语音(TTS)

    今天博主有一个文本转语音(TTS)的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步.

    文本转语音技术, 也叫TTS, 是Text To Speech的缩写. iOS如果想做有声书等功能的时候, 会用到这门技术.

    iOS7之后才有该功能,需要导入 AVFoundation 库

    //在iPhone静音模式开启后,声音无法播放,需要打开后台播放

    AVAudioSession *audioSession = [AVAudioSession sharedInstance];

    [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

    //语音合成器, 是最主要的接口

    AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc]init];

    //要说的一段话,语音合成器的播放内容接口

    AVSpeechUtterance *utterance1 = [[AVSpeechUtterance alloc]initWithString:[NSString stringWithFormat:@"%@",@"实时"]]; //需要转换的文本

    //读完一段后的停顿时间

    utterance1.postUtteranceDelay=0.1;

    //说话的速率

    utterance1.rate=0.4;

    //开始播放内容

    [av speakUtterance:utterance1];

    AVSpeechSynthesisVoice定义了一系列的声音, 主要是不同的语言和地区.下面是他的几个属性和方法

    voiceWithLanguage: 根据制定的语言, 获得一个声音.
    speechVoices: 获得当前设备支持的声音
    currentLanguageCode: 获得当前声音的语言字符串, 比如”ZH-cn”
    language: 获得当前的语言

    上面是一段简单的TTS播放,如果想要进行更复杂的操作,可以遵守AVSpeechSynthesizerDelegate协议,实现其方法

    合成器的委托, 对于一些事件, 提供了响应的接口.

    didCancelSpeechUtterance: 已经取消说话
    didContinueSpeechUtterance: 已经继续说话
    didFinishSpeechUtterance: 已经说完
    didPauseSpeechUtterance: 已经暂停
    didStartSpeechUtterance:已经开始
    willSpeakRangeOfSpeechString:将要说某段话

  • 相关阅读:
    HP Nonstop SQLMX (SPJ) Stored Procedure in Javas Getting Started
    Term of Wall Street
    iOS自带地图纠偏问题
    Android 界面排版的5种方式
    Android底部导航栏
    Android中Intent传值与Bundle传值的区别详解
    Android开发EditText属性
    从点击一个链接到浏览器显示页面,这个过程中发生了什么?
    HTML的常用标签属性及使用时需注意的一些细节
    写一个简单的脚本,并在脚本生成的的文件中添加内容
  • 原文地址:https://www.cnblogs.com/Twisted-Fate/p/5000538.html
Copyright © 2011-2022 走看看