1

即使只是将文本从 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  
    }
}

只希望音量正常。在我添加语音识别之前很好。

4

1 回答 1

0

发生这种情况是因为您打开了麦克风,当麦克风打开时,系统会降低扬声器以防止递归噪声。

麦克风打开时可用的一些选项: - 使用耳机扬声器 - 使用免提

因为如果扬声器继续它原来的响亮而清晰的声音,它会不断地通过麦克风听到自己的声音。

于 2019-06-15T11:49:32.347 回答