как определить, использовалась ли диктофон голоса для UITextView? Или кнопка микрофона прослушивались на клавиатуре в UI TextViewios: как определить, использовалась ли диктатура голоса для UITextView? Или клавиша микрофона была нажата на клавиатуре
0
A
ответ
0
Вы можете использовать рамки Speech Kit, который 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>
теперь создайте новую функцию startRecording()
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.")
}
}
подтверждают делегат
func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
if available {
startRecording()
} else {
//print("not implement")
}
}
+0
@thanks Umesh Verma, я хочу, чтобы версия для i-го, вы можете поделиться им, это будет очень полезно для меня – Nithya
Смежные вопросы
- 1. ios: как определить, использовалась ли диктатура голоса для UITextField? Или нажата кнопка микрофона на клавиатуре
- 2. Unity: определить, была ли нажата клавиша Return или Done на родной клавиатуре iOS.
- 3. Как определить, была ли нажата конкретная клавиша?
- 4. Как определить, нажата ли клавиша удаления на клавиатуре?
- 5. Как определить, какая клавиша SHIFT была нажата?
- 6. Как определить, какая клавиша Alt была нажата
- 7. Как я могу определить, какая клавиша нажата на клавиатуре? C++
- 8. Как я могу определить, была ли нажата клавиша Alt + letter
- 9. Рассчитайте, как долго нажата клавиша на клавиатуре
- 10. Как определить, какая клавиша была нажата на BlackBerry
- 11. Как я могу определить, какая клавиша была нажата на клавиатуре текстового поля?
- 12. Попытка определить, нажата ли клавиша
- 13. Android: Как узнать, нажата ли клавиша ok на клавиатуре?
- 14. Как определить, нажата ли клавиша в терминале?
- 15. Как определить, была ли нажата или нажата кнопка?
- 16. Можно ли определить, какая клавиша нажата для событий прослушивания клавиш JAVA? (нажата клавиша, напечатана или выпущена)
- 17. как определить, нажата ли клавиша Windows?
- 18. определить, какая клавиша нажата
- 19. Как определить, что нажата клавиша Ctrl + R?
- 20. Как проверить, была ли нажата клавиша много раз
- 21. Определите, нажата ли клавиша
- 22. Как определить, является ли вход пустым или нажата клавиша
- 23. Как определить, нажата ли клавиша «Подчеркивание» или «Минус»? C#
- 24. Как определить, нажата ли клавиша на OS X?
- 25. Как определить, была ли нажата клавиша CMD или Shift во время события NSPressGestureRecognizer?
- 26. Как найти, какая клавиша была нажата
- 27. Как определить, была ли нажата кнопка «Вверх»
- 28. Как определить, была ли нажата конкретная кнопка?
- 29. UITextView/UITextField: как проверить, нажата ли клавиша удаления в Swift
- 30. Как определить, была ли нажата кнопка «Назад» или кнопка «Вперед»?
Возможный дубликат [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