Ses Komutları: iOS App Interaction

Ses komutları, kullanıcıların iOS uygulamaları ile nasıl etkileşime girdiklerini, basit bir musluk-ve-swipe arabirimlerinin el-özgür, sezgisel kontrolüne izin veren bir şekilde yeniden şekillendirmekte olup, iOS Konuşma Tanımlama API'si ile kullanıcılar için gerçek zamanlı konuşma-tabiyasal yetenekleri daha erişilebilir, verimli ve ilgi çekici hale getirebilir.Bu makale iOS uygulamaları için ses kontrol eden, verimlilik uygulamasından ücretsiz not alma veya en iyi şekilde yararlanma izin verme işlemine izin veren, gerçek zamanlı konuşma tanıma özelliklerine izin verir.

iOS Konuşma Tanımlama API'sini anlamak

iOS Konuşma Tanım API, [[0)Speech çerçevesi[Dönetici:0)[Döneticileri değiştirip çevrimdışı olarak yeniden adlandırılmasını sağlarken, sunucu tabanlı tanıma genellikle 60 dil ve lehçeleri destekler.The Primate Engine running either-device (for supported languages) veya Apple'ın sunucularda.In-device tanımaya öncelik verir.In-device tanımaya ve çevrimdışı çalışırken, bu da genellikle karmaşık cümleler için daha yüksek bir doğruluk sağlar.

Anahtar yetenekler şunları içerir:

  • Gerçek zamanlı kısmi sonuçlar (progresif komut algılama için çok iyi).
  • Özel vocabularies viaFLT:0)SFSpeechRecognizer'in ) mülk.
  • IntroFLT:0)AV ISSoMühendis) ses yakalama ve tamponlama için.

API'nin kullanıcı tarafından tasarlanan komutlar için tasarlandığı ve sürekli olarak değil, her zaman listelenen senaryolar (Apple tek bir tanıma görevinde bir dakika en fazla alır). Bu sınırlama, niyetle bir araya gelme ve pil hayatını korumayı teşvik eder. daha fazla okuma için, [[Dönetici Konuşma çerçevesi belgesi).

Up Talk Recognition in Your App

Konuşma tanıması dikkatli izin işleme ve ses seans konfigürasyonu gerektirir. Aşağıda en iyi uygulamalarla genişleyen temel adımlar vardır.

1. Projenizi Hazırlayın

  • Ek olarak, projenizin oturum açma ve kayıt tutma yeteneğinize ek olarak, s.
  • 0:0)NSMikrofonUsageDescription[[Dönem: 1) anahtar inurFLT:1) (e.g., "Bu uygulama ses komutlarına mikrofon erişim gerektirir.
  • TheFL:0)NSSpeechRecognitionUsageDescription[D][/FONT][/FONT) anahtar (örneğin, "Bu uygulama, Apple'ın sunucularına komutları tanımanızı sağlar."

Not: Her iki anahtar sadece takip tanımayı planlıyorsanız bile gereklidir - Apple hala kullanıcı onayına ihtiyaç duyar.

2. İstek Authorization

CallFLT:0)SFSpeechRecognizer.requestYazma[[DK 1) Uygulama akışınızda erken (örneğin, inENFLT:2). her bir yetki durumunu mükemmel bir şekilde ele alın:

import Speech

SFSpeechRecognizer.requestAuthorization { authStatus in
 DispatchQueue.main.async {
 switch authStatus {
 case .authorized:
 // Enable voice command UI
 case .denied, .restricted:
 // Explain why speech recognition is unavailable
 case .notDetermined:
 // This should not occur after the request
 @unknown default:
 break
 }
 }
}

3. Bir SFSpeechRecognizer Instance

Anında:0)SFSpeechRecognizer), hedef kitlenizi eşleşen yerel bir yerel ile. varsayılan cihaz dili için, passİLD:4).

let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))

4. Ses Seanı ve Motorunu Yeniden yapılandırın

Set upFLT:0)AV ISSoMühendisliği[Dönetici:2) Mikrofon girişini yakalamak için [DÜDÜDÜ:2) kategori ve [[DÜyetim[Üye Olmayanlar[DÜye Olmayanlar İçin Tıklayınız.

let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode

let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, _) in
 self.request.append(buffer)
}

audioEngine.prepare()
try? audioEngine.start()

Her zaman ses motoru bir şekilde aritFLT:7) mikrofonu kullanılamaz hale getirmek için üretimde blok.

Ses Komutanlarını Uygulamak: Konuşmadan Eyleme

Ses aklandığında, komutlar için bir tanıma görevi ve parse sonuçları yaratırsınız. Anahtar kısmi sonuçlara tepki vermektir, böylece kullanıcılar konuşmadan önce komutlar tespit edilir.

Temel Tanımlama Görevi

let request = SFSpeechAudioBufferRecognitionRequest()
request.shouldReportPartialResults = true

let recognitionTask = recognizer?.recognitionTask(with: request) { result, error in
 guard let result = result else {
 // Handle error
 return
 }
 let transcript = result.bestTranscription.formattedString
 // Check for commands
 if transcript.lowercased().contains("next") {
 // Execute action
 }
}

Gelişmiş Komut Parsing

Basit bir hesap:) Küçük vocabullar için çalışır, ancak sağlam komut setleri için:

  • [FONT:0] NSLinguisticTagger[Döneticileri çıkarmak ve gürültüyü filtrelemek için).
  • [0]Bir komut kelime[[Dönetici][[Dönetici:0)[Köpektifler, “sonrası”, “öp”, “sonrası”, “ödünç”, “ödünç).
  • [FONT:0) Daha yüksek bir güven eşi için beklemek[DÜT:1): hareket etmeden önce kontrol = 1,9.
  • [FONT:0]Bir serin bir aşağı ([Dönetici) aynı cümleden birden çok tetikleyiciyi önlemek için bir araya gelir.
func processTranscript(_ transcript: String) {
 let lowercased = transcript.lowercased()
 let commands: [String: () -> Void] = [
 "next": { self.showNextItem() },
 "go back": { self.showPreviousItem() },
 "stop": { self.stopPlayback() }
 ]
 for (command, action) in commands {
 if lowercased.contains(command) {
 action()
 break
 }
 }
}

End-of-Speech ve Silence

Varsayılan olarak, kullanıcı konuşmayı durdurup bir duraklama tespit ettiğinde, Apple'ın ~1-:12) veya ) olarak görevin manuel olarak sona erebilirsiniz. sürekli bir komut deneyimi için (örneğin, çok adımlı eylemler), her bir sonuçtan sonra tanıma görevini yeniden başlatabilirsiniz.

Gelişmiş Özellikler: In-Device Recognition and Custom Vocabularies

iOS 13, Apple, tercih edilen diller için (şimdice İngilizce, Fransızca, Almanca, Japonca, Kore, Mandarin Çince, İspanyolca ve daha fazlası) ile getirilen bir ağ bağımlılığı, gecikme süresi ve geliştirilmiş gizlilik içerir - hiçbir ses cihazı terk eder.

guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
 request.requiresOnDeviceRecognition = true
}

Not: On-device doğruluk, özellikle isim veya alışılmadık kelime için sunucu tabanlı olarak biraz daha düşük olabilir.Uygulamalar için özel jargon (örneğin, tıbbi terimler, ürün isimleri), bir konuşma tanıması (Döneticileri) olarak kabul edilir.[Dönetici:0) ile [[Dönetici:2)[Döneticileri veya alışılmadık kelimeler[Döneticileri ile ilgili olarak[Dönemli)

Başka bir gelişmiş teknik, [[0)SFSpeechRecognizerDelegate) kullanılabilir değişiklikleri izlemek için (örneğin, kullanıcı izini geri döndürür, ağ durumu değişiklikleri). Implement:

class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
 func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
 // Disable or enable voice command button based on availability
 }
}

Üretimde Ses Komutları için En İyi Uygulamalar

Ses arabirimleri dokunmadan farklı davranır. Bu yönergeleri bir parlatılmış kullanıcı deneyimi sunmak için takip edin.

1. Clear Feedback

  • Dinlendiği zaman bir dalgaform veya pulsing göstergesi göster.
  • Bilinen metni görüntülemek (hatta kısmi) böylece kullanıcılar sistemin çalıştığını bilir.
  • Haptik geri bildirim kullanın (viaENFLT:0)UIImpactFeedbackGenerator[Dönetici: 1) komut tanımasında.

2. Hataları İşle

Ortak hatalar mikrofon erişimi, tanınma hizmeti mevcut değildir veya yetersiz ses kalitesi içerir. Kullanıcıyı eylemlenebilir mesajlarla (örneğin, “Lütfen yüksek sesle konuşun” veya "İnternet bağlantınızı kontrol edin).

3. Farklı Accents ve Çevreler için optimize edin

Farklı konuşmacılar grubu ile test edin.AR:0)SFSpeechRecognizer) bir arka konu hakkında tanınmak için mülk. ImplementASIFLT:2 fatura aktivitesi tespit) ölü havadan kaçınmak için sezgisel.

4. Gizlilik ve Şeffaflık

Açıkçası mikrofon ve konuşma iznine ihtiyacınız olduğunu açıklayın. Kullanıcı niyeti olmadan asla kayıt veya süreç konuşması - sistem tasarımı ses komutlarına başlamak için açık bir dokunuş gerektirir. Apple'ın gizlilik yönergelerine daha fazla, bkz.FLT:0).Requesting Authorization).

5. Bir Fallback Uygulama

Tüm kullanıcılar ses kullanmak veya kullanmak istememektedir. Her zaman alternatif dokunuş veya klavye girişi sağlar. erişilebilirlik için, ses komutları Anahtar Kontrol veya SesOver aracılığıyla kullanılabilir.

Gerçek Dünya Vakaları ve İlhami Kullanıyor

  • [FONT=0]Navigasyon Uygulamaları: [Dönem:[Dönem: 1) Beni eve götür” veya " yakındaki gaz istasyonları" harita SDK'ları kullanarak.
  • [FONT:0)Ürünlük & Not-Taking:) “Yeni bir not veya "Add task" Core Data veya CloudKit ile entegre edilmiştir.
  • [FONT:0)Smart Home Controllers:[Dönetici:[Dönetici:0)[FONT: {0}[FONT:0) HomeKit kullanarak "Yaşam oda ışıklarını kapat."
  • [FONT:0]Fitness & Workout:) “5 dakikalık serinleme” veya "Log 10 pushups" olarak başlayın.
  • [FONT:0]E-Learning:[Dönetici:[Dönetici:[Dönetici: · 1 ) Ses, flaş kartpostalarına veya testlere cevap verir.

Daha fazla fikir için, [[Dönetici:0)SFSpeechRecognizer API referansı) ve [[Üye Tarihi:2)Parti kodu[DÜye Olmayanlar İçin[DÜye Olmayanlar İçin Tıklayınız.

Sonuç: Kullanıcılara Sesle Güç

iOS Konuşma Tanım API, bu makalede belirtilen kurulum adımlarını takip ederek, iyi hazırlanmış bir araçtır - ve yanıt - günlük kullanımdan, iyi hazırlanmış ses özellikleri azaltılabilir, erişilebilirliği artırmak ve memnun kullanıcılar.Bu makalede belirtilen adımları takip ederek - ve ileri teknikler - ve yanıt - doğal ve çabasız hissetmek için -.

Küçük başlayın: tek bir komut ("Yardım" veya "Go back") bir sonraki güncellemenizde, kullanıcı geri bildirimine dayalı genişleyerek yeni diller eklenir ve yeni diller eklenir, ses kontrollü iOS deneyimleri için potansiyel yalnızca büyüyecektir.