В настоящее время я работаю над проектом, где он должен получить голос пользователя в качестве входных данных, и он должен быть преобразован в текст в реальном времени. Я пробовал много примеров проектов в JAVA Sphinx, но я борюсь с частью написания файла грамматики. Итак, если есть какой-либо возможный способ сделать это в SWIFT3, пожалуйста, помогите мне с этим?Преобразование голоса в текст в Swift3
ответ
Теперь от iOS10
Apple предлагает лучшее решение этой проблемы для разработчиков iOS. Теперь вы можете интегрировать свое приложение с SiriKIt
, Tutoiral here. Его все Siri's
Ответственность за управление текста в голос recognization и преимущество использования этого набора является то, что
он становится более мощным, как версии IOS не обновляют и как только вы интегрирует это, нет необходимо изменить вашу работу с кодом
Ваша строка кода также меньше по сравнению с использованием стороннего производителя.
Вам не нужно управлять комплектом, как вы это делаете с третьим, его все обязанности яблок для управления всем о
SiriKit
.
Вот пример того, как можно использовать SFSpeechRecognizer
для преобразования голоса в текст
Прежде всего import Speech
рамки в файле .swift
.
Затем ответить на делегатый SFSpeechRecognizerDelegate
как этого
public class ViewController: UIViewController, SFSpeechRecognizerDelegate {
затем объявить приведенное ниже Свойство
private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))!
private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest?
private var recognitionTask: SFSpeechRecognitionTask?
private let audioEngine = AVAudioEngine()
После этого вещей, убедитесь, что у вас есть доступ к Speech recognition
Теперь используйте этот код для преобразования голоса в текст
let audioSession = AVAudioSession.sharedInstance()
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setMode(AVAudioSessionModeMeasurement)
try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
guard let inputNode = audioEngine.inputNode else { fatalError("Audio engine has no input node") }
guard let recognitionRequest = recognitionRequest else { fatalError("Unable to created a SFSpeechAudioBufferRecognitionRequest object") }
// Configure request so that results are returned before audio recording is finished
recognitionRequest.shouldReportPartialResults = true
// A recognition task represents a speech recognition session.
// We keep a reference to the task so that it can be cancelled.
recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest) { result, error in
var isFinal = false
if let result = result {
//Here the the text of your voice
print(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: AVAudioPCMBuffer, when: AVAudioTime) in
self.recognitionRequest?.append(buffer)
}
audioEngine.prepare()
try audioEngine.start()
Отказ от ответственности - код был взят из - here
Похоже, вы не сделали много исследований по этой теме.
Любые способы Есть много способов, вы можете достичь того, что вы хотите ... Как:
рамки использования Выступление самого яблока. Вы получите уроки для речевого кадра работы here и here также вы можете посмотреть на каркасных деталях над here
Использованием OpenEars (его библиотека с открытой исходным кодом для распознавания речи)
Надеется, что это поможет :)
Вы должны [видеть] (https: //www.appcoda.com/siri-speech-framework /) this – iDeveloper