質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

941閲覧

AVSpeechSynthesizerの音量

destiny_

総合スコア4

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/07/09 08:45

SFSpeechRecognizerで音声認識をしながらAVSpeechSynthesizerを使って音声の出力をしようとしたんですけど、音量がすごく小さくなってしまいます。何か解決方法はありませんか?解決方法も色々調べたのですがあまりパッとしなかったので質問させてもらいます。

import UIKit import Speech class recording{ private var recognitionRequest = SFSpeechAudioBufferRecognitionRequest() private var speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "ja-JP"))! private var recognitionTask: SFSpeechRecognitionTask? private var audioEngine = AVAudioEngine() private let synthesizer = AVSpeechSynthesizer() public var lang = "ja-JP" public var text = "肘です" override func viewDidLoad() { super.viewDidLoad() start() } func start() { recognitionRequest = SFSpeechAudioBufferRecognitionRequest() speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: lang))! audioEngine = AVAudioEngine() 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) { result, error in print(result?.bestTranscription.formattedString ?? "") let speechresult=result!.bestTranscription.formattedString let words = speechresult.suffix(4) let trigger = ["ここどこ","これ何","ここは","これなに","これは","これどこ"] for i in trigger{ if words.lowercased().contains(i){ self.play() } } if let error = error { print("ERROR!") print(error.localizedDescription) } } DispatchQueue.main.asyncAfter(deadline: .now() + 55.0, execute: { self.recognitionTask?.cancel() self.recognitionTask?.finish() self.audioEngine.stop() print("RESTART") self.start() }) } public func play() { // 発音を準備する //let utterance = AVSpeechUtterance.init(string: self.text) let utterance = AVSpeechUtterance.init(string: text) let voice = AVSpeechSynthesisVoice.init(language: lang) utterance.voice = voice // 再生する synthesizer.speak(utterance) } }

トリガーとなる言葉を認識したらplay()が呼び出される仕様になっています。
初心者ですので色々拙いかもしれませんがお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問