【Swift4】AVSpeechSynthesizerを使用した読み上げ機能を3分で実装する方法【Objective-C】
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