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:
NLEmbeddinguntuk 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 |