Section 7/171 menit

7. Vision, Natural Language, dan Speech

7. Vision, Natural Language, dan Speech

Tiga framework "built-in AI" yang sering ter-overlook karena dianggap "old school". Padahal mereka paling tepat untuk kebanyakan task umum.

Vision

swift
// vision: OCR — extract text dari image
import Vision

let request = VNRecognizeTextRequest { request, error in
    guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
    for observation in observations {
        if let topCandidate = observation.topCandidates(1).first {
            print(topCandidate.string)
        }
    }
}
request.recognitionLevel = .accurate
request.recognitionLanguages = ["id-ID", "en-US"]

let handler = VNImageRequestHandler(cgImage: image)
try handler.perform([request])

Capability Vision:

  • OCR (16+ bahasa, termasuk handwriting di iOS 17+).
  • Face detection + landmark + emotion.
  • Object detection (built-in classes).
  • Image classification (built-in 1000+ kategori).
  • Barcode / QR detection.
  • Person segmentation.
  • Document detection.
  • Hand pose estimation.
  • Body pose estimation.

Natural Language

swift
// natural-language: Sentiment analysis
import NaturalLanguage

let tagger = NLTagger(tagSchemes: [.sentimentScore])
tagger.string = "Aplikasi ini sangat menarik dan mudah digunakan!"
let (sentiment, _) = tagger.tag(at: tagger.string!.startIndex, unit: .paragraph, scheme: .sentimentScore)
let score = Double(sentiment?.rawValue ?? "0") ?? 0
// score: -1.0 (negatif) sampai 1.0 (positif)

Capability Natural Language:

  • Language identification.
  • Tokenization (word, sentence).
  • Lemmatization.
  • Named Entity Recognition (NER): person, place, organization.
  • Sentiment score (.sentimentScore).
  • Embeddings: NLEmbedding untuk word & sentence-level (semantic similarity).

Speech

swift
// speech: Live transcription
import Speech

let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "id-ID"))
let request = SFSpeechAudioBufferRecognitionRequest()
request.shouldReportPartialResults = true
request.requiresOnDeviceRecognition = true  // privacy mode

let task = recognizer?.recognitionTask(with: request) { result, error in
    if let result {
        print(result.bestTranscription.formattedString)
    }
}

Capability Speech:

  • Speech-to-text (offline mode tersedia sejak iOS 13).
  • 60+ bahasa.
  • Real-time streaming dengan partial results.

Kapan Pakai Yang Mana

Task Framework
Extract text dari foto Vision (VNRecognizeTextRequest)
Deteksi wajah / pose Vision
Klasifikasi gambar umum Vision (VNClassifyImageRequest)
Sentiment review user Natural Language
Auto-tag entity di teks Natural Language (NLTagger)
Cari teks mirip secara semantik Natural Language (NLEmbedding)
Voice command / dictation Speech