$30 off During Our Annual Pro Sale. View Details »

A coisa mais sensacional que passou despercebida na WWDC

A coisa mais sensacional que passou despercebida na WWDC

Apresentação dada no TDC SP 2016 Trilha iOS
Cógido e Deckset: https://github.com/fpg1503/AmazingSpeechFrameworkTalk

Francesco

July 05, 2016
Tweet

More Decks by Francesco

Other Decks in Programming

Transcript

  1. The Developer's Conference

    View Slide

  2. The Developer's Conference
    Francesco Perrotti-Garcia

    View Slide

  3. A coisa mais sensacional
    que passou despercebida na WWDC

    View Slide

  4. Francesco
    Perrotti-Garcia
    iOS Developer
    @fpg1503

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. WWDC Schedule

    View Slide

  9. View Slide

  10. Session 509

    View Slide

  11. Speech.framewor

    View Slide

  12. import Speech

    View Slide

  13. Siri

    View Slide

  14. Keyboard Dictation

    View Slide

  15. Normalmente online

    View Slide

  16. Usage description
    Info.plist

    View Slide

  17. NSSpeechRecognitionUsageDescription

    View Slide

  18. SFSpeechRecognize

    View Slide

  19. public class func
    requestAuthorization(_ handler:
    (SFSpeechRecognizerAuthorizationSta
    tus) -> Swift.Void)

    View Slide

  20. SFSpeechRecognizer.init?(locale: Locale)

    View Slide

  21. public enum SFSpeechRecognizerAuthorizationStatus : Int {
    case notDetermined
    case denied
    case restricted
    case authorized
    }

    View Slide

  22. SFSpeechURLRecognitionRequest

    View Slide

  23. · App de mensagem
    · App de músicas
    · Qualquer coisa gravada

    View Slide

  24. SFSpeechAudioBufferRecognitionRequest

    View Slide

  25. let recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
    recognitionRequest.shouldReportPartialResults = true

    View Slide

  26. public func recognitionTask(with
    request:
    SFSpeechRecognitionRequest,
    resultHandler:
    (SFSpeechRecognitionResult?,
    NSError?) -> Swift.Void) ->
    SFSpeechRecognitionTask

    View Slide

  27. Live com AVAudioEngine

    View Slide

  28. let audioSession = AVAudioSession.sharedInstance()
    try audioSession.setCategory(AVAudioSessionCategoryRecord)
    try audioSession.setMode(AVAudioSessionModeMeasurement)
    try audioSession.setActive(true, with: .notifyOthersOnDeactivation)

    View Slide

  29. let audioEngine = AVAudioEngine()
    guard let inputNode = audioEngine.inputNode else {
    fatalError("Audio engine has no input node")
    }

    View Slide

  30. AVAudioNode

    View Slide

  31. public func installTap(onBus bus:
    AVAudioNodeBus, bufferSize:
    AVAudioFrameCount, format:
    AVAudioFormat?, block tapBlock:
    AVFoundation.AVAudioNodeTapBlock)

    View Slide

  32. public typealias
    AVAudioNodeTapBlock =
    (AVAudioPCMBuffer, AVAudioTime) ->
    Swift.Void

    View Slide

  33. Começar

    View Slide

  34. let recordingFormat = inputNode.outputFormat(forBus: 0)
    inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) {
    self.recognitionRequest?.append($0.0)
    }
    audioEngine.prepare()
    try audioEngine.start()

    View Slide

  35. Terminar

    View Slide

  36. audioEngine.stop()
    recognitionRequest?.endAudio()

    View Slide

  37. Demo

    View Slide

  38. This app has crashed because it attempted to
    access privacy-sensitive data without a usage
    description. The app's Info.plist must contain an
    NSMicrophoneUsageDescription key with a string
    value explaining to the user how the app uses
    this data.

    View Slide

  39. Quais locales suportados?

    View Slide

  40. SFSpeechRecognizer.supportedLocales()

    View Slide

  41. SpeakToMe

    View Slide

  42. Perguntas?

    View Slide

  43. Obrigado!

    View Slide

  44. github.com/fpg1503

    View Slide