iOS文本朗讀

iOS中文本朗讀需要使用AVFoundation框架

1.首先要了解兩個類充當的角色

AVSpeechSynthesizer相當於一個DVD

AVSpeechUtterance相當於一個磁盤

2.AVSpeechSynthesizer的屬性和方法

delegate 代理,用於監聽朗讀器的開始、暫停、停止和完成等等操作的

speaking 是否正在朗讀

paused 是否暫停

  • (void)speakUtterance:(AVSpeechUtterance *)utterance;
    使用該方法向語音隊列裏添加需要朗讀的語句,然後會按着添加順序依次朗讀
  • (BOOL)stopSpeakingAtBoundary:(AVSpeechBoundary)boundary;
    停止朗讀
  • (BOOL)pauseSpeakingAtBoundary:(AVSpeechBoundary)boundary;
    暫停朗讀
  • (BOOL)continueSpeaking;
    繼續朗讀

3.AVSpeechUtterance的屬性和方法

  • (instancetype)speechUtteranceWithString:(NSString *)string;

  • (instancetype)initWithString:(NSString *)string;
    兩個初始化方法,參數是你需要朗讀的文字

voice AVSpeechSynthesisVoice,設置朗讀文字的語言,如果不設置會默認爲當前系統的語言,

    使用[NSLocale availableLocaleIdentifiers]可以獲取語言列表

rate 0.0-1.0,設置朗讀的速度

pitchMultiplier 0.5-2.0,設置朗讀的音調

volume 0.0-1.0,朗讀的聲音大小

preUtteranceDelay 距離上一句結束的間隔

postUtteranceDelay 下一句朗讀距離該句結束開始的間隔

下面是一個簡單的朗讀代碼

    _speechSynthesizer = [[AVSpeechSynthesizer alloc] init];


    NSArray *array = @[@"Hello sun!",
                       @"開始說中文?",
                       @"其他的語言我不知道能不能行"];

    for(NSString *str in array){

        AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:str];
        utterance.rate = 0.5;
        utterance.pitchMultiplier = 0.8;
        utterance.volume = 0.5;
        utterance.postUtteranceDelay = 0.1;
        [_speechSynthesizer speakUtterance:utterance];
    }
發佈了34 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章