2016-12-23 7 views
-2

В настоящее время я работаю над проектом, где он должен получить голос пользователя в качестве входных данных, и он должен быть преобразован в текст в реальном времени. Я пробовал много примеров проектов в JAVA Sphinx, но я борюсь с частью написания файла грамматики. Итак, если есть какой-либо возможный способ сделать это в SWIFT3, пожалуйста, помогите мне с этим?Преобразование голоса в текст в Swift3

+1

Вы должны [видеть] (https: //www.appcoda.com/siri-speech-framework /) this – iDeveloper

ответ

2

Теперь от iOS10 Apple предлагает лучшее решение этой проблемы для разработчиков iOS. Теперь вы можете интегрировать свое приложение с SiriKIt, Tutoiral here. Его все Siri's Ответственность за управление текста в голос recognization и преимущество использования этого набора является то, что

  1. он становится более мощным, как версии IOS не обновляют и как только вы интегрирует это, нет необходимо изменить вашу работу с кодом

  2. Ваша строка кода также меньше по сравнению с использованием стороннего производителя.

  3. Вам не нужно управлять комплектом, как вы это делаете с третьим, его все обязанности яблок для управления всем о SiriKit.

2

Вот пример того, как можно использовать 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

+0

Привет, в этом возникает ошибка, говорящая, что речевой сигнал не доступен при создании объекта из SFSpeechRecognizer – Sheron

+0

Вы импортировали фреймворк 'Speech'? – Rajat

+0

Да, я импортировал его, но все же наступает ошибка. – Sheron

2

Похоже, вы не сделали много исследований по этой теме.

Любые способы Есть много способов, вы можете достичь того, что вы хотите ... Как:

  • рамки использования Выступление самого яблока. Вы получите уроки для речевого кадра работы here и here также вы можете посмотреть на каркасных деталях над here

  • Использованием OpenEars (его библиотека с открытой исходным кодом для распознавания речи)

Надеется, что это поможет :)