【Swift4】AVSpeechSynthesizerを使用した読み上げ機能を3分で実装する方法【Objective-C】

2020年8月27日

AVSpeechSynthesizerを使用した日本語、英語の読み上げ機能を3分で実装する方法をご紹介いたします。

iOSのAVFoundationには標準で「AVSpeechSynthesizer」という読み上げするための機能が備わっています。今回はこちらを使用して音声の読み上げを実装してみたいと思います。

Swift4.0

import UIKit

// AVFoundationのインポート
import AVFoundation

class ViewController: UIViewController, UIScrollViewDelegate {
    
    // AVSpeechSynthesizerをクラス変数で保持しておく、インスタンス変数だと読み上げるまえに破棄されてしまう
    var speechSynthesizer : AVSpeechSynthesizer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // AVSpeechSynthesizerのインスタンス作成
        self.speechSynthesizer = AVSpeechSynthesizer()
        // 読み上げる、文字、言語などの設定
        let utterance = AVSpeechUtterance(string:"こんにちわ") // 読み上げる文字
        utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP") // 言語
        utterance.rate = 0.5; // 読み上げ速度
        utterance.pitchMultiplier = 0.5; // 読み上げる声のピッチ
        utterance.preUtteranceDelay = 0.2; // 読み上げるまでのため
        self.speechSynthesizer.speak(utterance)
        
    }
    
}

Objective-C

#import "ViewController.h"

// AVFoundationのインポート
#import <AVFoundation/AVFoundation.h>

@interface ViewController () {
    // AVSpeechSynthesizerをクラス変数で保持しておく、インスタンス変数だと読み上げるまえに破棄されてしまう
    AVSpeechSynthesizer *speechSynthesizer;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // AVSpeechSynthesizerのインスタンス作成
    speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
    // 読み上げる、文字、言語などの設定
    AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"こんにちわ"]; // 読み上げる文字
    utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"]; // 言語
    utterance.rate = 0.5; // 読み上げ速度
    utterance.pitchMultiplier = 0.5; // 読み上げる声のピッチ
    utterance.preUtteranceDelay = 0.5; // 読み上げるまでのため
    [speechSynthesizer speakUtterance:utterance];
}

@end