zoukankan      html  css  js  c++  java
  • iOS-文本转语音

    - 文本转语音

    iOS提供了一个类AVSpeechSynthesizer来实现文本到语音的功能, 即读出文字

    直接上代码:

        AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
        
        NSArray *speechStrings = @[@"Hello AV Foundation. How are you?",
                                   @"我很好, 感谢!",
                                   @"Are you excited about the book?",
                                   @"是的, 我非常喜欢这本书.",
                                   @"What's your favourite feature?",
                                   @"我都很喜欢呢!",
                                   @"It was great to speak with you!",
                                   @"我也是, 祝你愉快"];
        
        NSArray *voices = @[[AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"],
                            [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-cn"]];
        
        
        for (int i = 0; i < speechStrings.count; i ++) {
            
            AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:speechStrings[i]];
            
            utterance.voice              = voices[i % 2];   // 语言
            utterance.rate               = 0.4f;            // 播放语音的速度
            utterance.pitchMultiplier    = 0.8f;            // 音调
            utterance.postUtteranceDelay = 0.1f;            // 下一句间隔时间
            
            // 发音
            [synthesizer speakUtterance:utterance];
        }

    - 设置音频会话类型

    下面是常见音频会话分类

    分类 作用 是否允许混音 音频输入 音频输出
    Ambient 游戏, 效率应用程序 V   V
    Solo Ambient(默认) 游戏, 效率应用程序     V
    Playback 音频和视频播放器 可选   V
    Record 录音机, 音频捕捉   V  
    Play and Record VOIP, 语音聊天 可选 V V
    Audio Processing 离线会话和处理      
    Multi-Route 使用外部硬件的高级A/V应用程序   V V

    设置音频会话

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        AVAudioSession *session = [AVAudioSession sharedInstance];
    
        NSError *error;
        if (![session setCategory:AVAudioSessionCategoryPlayback error:&error]) {
            
            NSLog(@"Category Error: %@", [error localizedDescription]);
        }
        
        if (![session setActive:YES error:&error]) {
            
            NSLog(@"Activation Error: %@", [error localizedDescription]);
        }
        return YES;
    }
  • 相关阅读:
    从网络通信角度谈web性能优化
    JavaScript对象的深浅复制
    Ajax原理、优缺点及应用场景
    细谈sass和less中的变量及其作用域
    动态样式语言—LESS
    js中创建对象的几种方式
    Node学习笔记---初识Node
    "一不小心就火了"团队采访
    部门管理系统需求规格说明书
    java利用iTextWorker生成pdf
  • 原文地址:https://www.cnblogs.com/zhouxihi/p/7384886.html
Copyright © 2011-2022 走看看