Объем текста в речи значительно снизился после добавления речи в текст (распознавание речи) - PullRequest
1 голос
/ 09 июня 2019

Громкость в контроллере представления с меткой стала очень тихой даже при простой передаче текста из UITextView в UILabel.

Почти все работает отлично, не считая проблемы с объемом.

Файл класса речи:

import UIKit
import AVFoundation

class TextToSpeech {

    private let synthesizer = AVSpeechSynthesizer()
    var Rate: Float = AVSpeechUtteranceDefaultSpeechRate
    var Voice = AVSpeechSynthesisVoice(language: "en-US")

    func Say(_ phrase: String) {
        let Utterance = AVSpeechUtterance(string: phrase)
        Utterance.rate = Rate
        Utterance.voice = Voice

        synthesizer.speak(Utterance)
    }
}

Контроллер преобразования текста в речь:

import UIKit
import AVFoundation

class TextToSpeechTest: UIViewController {

    let speak = TextToSpeech()
    let label = UILabel()

    override func viewDidLoad(){ super.viewDidLoad()

        speak.Say(label.text!)
    }
}

Речевой текстовый контроллер:

import UIKit
import AVFoundation
import Speech

class SpeechToText: UIViewController {

    let textView = UITextView()
    let audioEngine = AVAudioEngine()
    let speechRecognizer: SFSpeechRecognizer? = SFSpeechRecognizer()
    let request = SFSpeechAudioBufferRecognitionRequest()
    var recognitionTask: SFSpeechRecognitionTask?
    let speechToTextButton = UIButton()
    let textToSpeechButton = UIButton()

    func recordAndConvertSpeech() {
        let node = audioEngine.inputNode
        let recordingFormat = node.outputFormat(forBus: 0)
        node.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) {
            buffer, _ in self.request.append(buffer)
        }

        audioEngine.prepare()
        do {
            try audioEngine.start()
        } catch {
            return print(error)
        }

        guard let myRecognizer = SFSpeechRecognizer()
            else { return }

        if !myRecognizer.isAvailable { return }

        recognitionTask = speechRecognizer?.recognitionTask(with: request, resultHandler: { result, error in 

            if let result = result {
                let bestString = result.bestTranscription.formattedString

                self.textView.text = bestString
            } else if let error = error {
                print(error)
            }
        })
    }

    @objc func speechToTextButton() {
        recordAndConvertSpeech()
    }

    @objc func textToSpeechButton() {
        let textToSpeechTest = TextToSpeechTest()

        self.navigationController?.pushViewController(textToSpeechTest, animated: true)
        textToSpeechTest.label.text = textView.text  
    }
}

Просто хочу, чтобы громкость была нормальной. Это было хорошо, прежде чем я добавил распознавание речи.

1 Ответ

0 голосов
/ 15 июня 2019

Это произошло потому, что вы включили микрофон, когда микрофон включен, система уменьшает громкоговоритель для предотвращения рекурсивных шумов.

Некоторые опции доступны, когда микрофон включен: - Используйте динамик для наушников - Используйте громкую связь

Поскольку, если динамик продолжает издавать свой оригинальный громкий и чистый звук, он будет постоянно слышать себя через микрофон.

...