0
A
回答
0
敲擊鍵盤上您可以使用語音工具框架,使用Siri的語音識別。 先導入語音工具框架然後確認一個委託 這裏是快捷版本。它可能有助於
import Speech
class ViewController: UIViewController, SFSpeechRecognizerDelegate {
private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest?
private var recognitionTask: SFSpeechRecognitionTask?
private let audioEngine = AVAudioEngine()
private let speechRecognizer = SFSpeechRecognizer(locale: Locale.init(identifier: "en-US"))
override func viewDidLoad() {
super.viewDidLoad()
self.authorizeSpeech()
}
private func authorizeSpeech() {
SFSpeechRecognizer.requestAuthorization { (authStatus) in //4
var isButtonEnabled = false
switch authStatus { //5
case .authorized:
isButtonEnabled = true
case .denied:
isButtonEnabled = false
print("User denied access to speech recognition")
case .restricted:
isButtonEnabled = false
print("Speech recognition restricted on this device")
case .notDetermined:
isButtonEnabled = false
print("Speech recognition not yet authorized")
}
OperationQueue.main.addOperation() {
print(isButtonEnabled) //this tells that speech authorized or not
}
}
}
}
現在在你添加一些自定義消息的info.plist
<key>NSMicrophoneUsageDescription</key> <string>Your microphone will be used to record your speech when you press the Start Recording button.</string>
<key>NSSpeechRecognitionUsageDescription</key> <string>Speech recognition will be used to determine which words you speak into this device microphone.</string>
現在創建)
func startRecording() {
if recognitionTask != nil {
recognitionTask?.cancel()
recognitionTask = nil
}
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setMode(AVAudioSessionModeMeasurement)
try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
} catch {
print("audioSession properties weren't set because of an error.")
}
recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
guard let inputNode = audioEngine.inputNode else {
fatalError("Audio engine has no input node")
}
guard let recognitionRequest = recognitionRequest else {
fatalError("Unable to create an SFSpeechAudioBufferRecognitionRequest object")
}
recognitionRequest.shouldReportPartialResults = true
recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
var isFinal = false
if result != nil {
your_text_view.text = result?.bestTranscription.formattedString
isFinal = (result?.isFinal)!
}
if error != nil || isFinal {
self.audioEngine.stop()
inputNode.removeTap(onBus: 0)
self.recognitionRequest = nil
self.recognitionTask = nil
}
})
let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, when) in
self.recognitionRequest?.append(buffer)
}
audioEngine.prepare()
do {
try audioEngine.start()
} catch {
print("audioEngine couldn't start because of an error.")
}
}
確認委託
所謂的startRecording(新功能func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
if available {
startRecording()
} else {
//print("not implement")
}
}
+0
@thanks Umesh Verma,我想我的客觀的C版本,請你分享它對我來說是非常有用的 – Nithya
相關問題
- 1. ios:如何檢測語音聽寫是否用於UITextField?或鍵盤上的麥克風按鈕
- 2. iOS xcode麥克風音量檢測?
- 3. 如何檢查麥克風是否可用於錄音
- 4. 如何監聽麥克風的噪音?
- 5. 在CCTextField中使用聽寫(麥克風按鈕)時,Cocos2d崩潰
- 6. 檢測耳機是否有麥克風
- 7. 檢測麥克風是否開啓
- 8. IOS錄音,如何在麥克風播放忙碌前檢查麥克風/播放是否正常
- 9. 檢測打擊在Android的麥克風
- 10. 帶麥克風的Android哨音檢測
- 11. kissfft基音檢測麥克風
- 12. 我們可以在按鈕上點擊或打開鍵盤麥克風功能來獲取輸入嗎?
- 13. 如何檢測新麥克風是否可用?
- 14. 如何檢測麥克風是否存在
- 15. 檢測到麥克風的一擊
- 16. 如何在Delphi 7中收聽麥克風並檢測聲音響度
- 17. MonoTouch檢測iPhone上是否啓用麥克風
- 18. 如何檢測iPad用戶點擊鍵盤隱藏按鈕?
- 19. 如何檢測PTT按鈕控股藍牙PTT麥克風的iOS
- 20. 隱藏麥克風按鈕Android虛擬鍵盤
- 21. BASIC - 在按鍵上激活麥克風錄音?
- 22. 如何在iPhone中檢測麥克風不響的聲音?
- 23. 檢測麥克風/耳機?
- 24. 如何檢測用戶是否點擊Android鍵盤上的sym或表情按鈕?
- 25. 如何在模擬器上測試iOS麥克風的使用?
- 26. 檢測點擊並保持在iOS鍵盤按鍵
- 27. 如何檢測按下的鍵盤按鍵是否被點擊? (Ctrl-點擊,Alt-點擊等)
- 28. 語音語音識別android刪除谷歌屏幕和麥克風按鈕
- 29. 用於從音量調節麥克風獲取語音的Api
- 30. C#在麥克風上聆聽
[ios:如何檢測語音聽寫是否用於UITextField?或麥克風按鈕被輕敲在鍵盤上](http://stackoverflow.com/questions/32652775/ios-how-to-detect-if-voice-dictation-was-used-for-uitextfield-or-microphone-bu) – Saavaj
@ Saavaj,請你詳細的看我的問題,我提到UITextview不是UITextField.UITextView是不同於UITextField – Nithya