次は音声認識を紹介します。
音声認識は音声をテキストに起こしてくれる機能です。この機能を使えばマイクに話している内容の文字起こしや音声データのテキストデータ化が可能になります。
しかしアップルのサーバとの通信が必要なので、「インターネットにつながっているところでしか使えない」という注意点もあります。処理内容も重く、バッテリーや通信量にも注意して利用する必要があります。
それでは、実際に音声認識機能を使ったアプリを作ってみます。ここではマイクからの声を拾って画面上に表示するアプリを作ってみます。
まずは新規プロジェクトを作成します。プロジェクトの種類はSimple View Applicationとします。
プロジェクトを作ったら、音声認識フレームワークのSpeechを追加します。
Info.plistに「NSSpeechRecognitionUsageDescription」「NSMicrophoneUsageDescription」というキーを追加して、マイクと音声解析の使用目的を記述します。
次はViewController.swiftを以下のように変更します。ボタン押下時、解析中なら解析終了、解析前なら音声解析を開始する処理を追加してあります。
class ViewController: UIViewController { private let recognitionRequest = SFSpeechAudioBufferRecognitionRequest() private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "ja-JP"))! private var recognitionTask: SFSpeechRecognitionTask? private let audioEngine = AVAudioEngine() @IBOutlet weak var label: UILabel! @IBOutlet weak var button: UIButton! public override func viewDidLoad() { super.viewDidLoad() SFSpeechRecognizer.requestAuthorization { _ in } } @IBAction func tapStartBtn(_ sender: AnyObject) { if audioEngine.isRunning { audioEngine.stop() recognitionRequest.endAudio() recognitionTask?.cancel() recognitionTask = nil button.setTitle("録音完了", for: .normal) button.isEnabled = false } else { // マイクからの音声を解析エンジンに渡す let recordingFormat = audioEngine.inputNode?.outputFormat(forBus: 0) audioEngine.inputNode?.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer: AVAudioPCMBuffer, when: AVAudioTime) in self.recognitionRequest.append(buffer) } try! audioEngine.start() recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest) { [weak self] result, error in // 解析結果を反映 if let result = result { self?.label.text = result.bestTranscription.formattedString } } button.setTitle("録音終了", for: .normal) } } }
最後にMain.storyboardにラベルとボタンを配置します。それぞれをViewControllerのlabelとbuttonとひも付けます。次にbutton押下時のアクションをtapStartBtnとひも付ければ完成です。
アプリを起動すると最初にアクセス許可を求められます。
起動してボタンを押すと解析開始します。マイクに話し掛ければ、その内容を画面に表示してくれます。
今回は「iOS 10で追加されたスピーチフレームワークのテスト中」と話し掛けたのですが、正確に拾ってくれました。
今回作成したコードは、こちら「SpeechSample.zip」からダウンロードできます。
Copyright © ITmedia, Inc. All Rights Reserved.