Rozpoznávání řeči v Xamarin. iOSSpeech Recognition in Xamarin.iOS

Tento článek představuje nové rozhraní API pro rozpoznávání řeči a ukazuje, jak ho implementovat v aplikaci Xamarin. iOS, aby se podporovalo nepřetržité rozpoznávání řeči a přepisovat řeči (z živých nebo zaznamenaných zvukových streamů) na text.This article presents the new Speech API and shows how to implement it in a Xamarin.iOS app to support continuous speech recognition and transcribe speech (from live or recorded audio streams) into text.

Novinka v systému iOS 10 vydává rozhraní API pro rozpoznávání řeči, které umožňuje aplikaci pro iOS podporovat nepřetržité rozpoznávání řeči a přepisovat řeči (z živých nebo zaznamenaných zvukových streamů) na text.New to iOS 10, Apple has release the Speech Recognition API that allows an iOS app to support continuous speech recognition and transcribe speech (from live or recorded audio streams) into text.

Podle Applu má rozhraní API pro rozpoznávání řeči následující funkce a výhody:According to Apple, the Speech Recognition API has the following features and benefits:

  • Velmi přesnéHighly Accurate
  • Stav kresbyState of the Art
  • Snadné použitíEasy to Use
  • RychlýFast
  • Podporuje více jazykůSupports Multiple Languages
  • Respektuje ochranu osobních údajů uživatelůRespects User Privacy

Princip rozpoznávání řečiHow Speech Recognition Works

Rozpoznávání řeči je implementováno v aplikaci pro iOS získáním živého nebo předem zaznamenaného zvuku (v jakémkoli z mluvených jazyků, které podporuje rozhraní API), a předáním do nástroje pro rozpoznávání řeči, který vrací přepis mluvených slov mluveného textu.Speech Recognition is implemented in an iOS app by acquiring either live or pre-recorded audio (in any of the spoken languages that the API supports) and passing it to a Speech Recognizer which returns a plain-text transcription of the spoken words.

Princip rozpoznávání řečiHow Speech Recognition Works

Diktování klávesniceKeyboard Dictation

Když si většina uživatelů myslí rozpoznávání řeči na zařízení s iOS, představí integrovaného hlasového asistenta Siri, který byl vydaný spolu s diktování klávesnice v iOS 5 s iPhone 4S.When most users think of Speech Recognition on an iOS device, they think of the built-in Siri voice assistant, which was released along with Keyboard Dictation in iOS 5 with the iPhone 4S.

Diktování klávesnice je podporováno jakýmkoli prvkem rozhraní, který podporuje TextKit (například UITextField nebo UITextArea ) a je aktivován uživatelem kliknutím na tlačítko diktování (přímo nalevo od mezerníku) na virtuální klávesnici iOS.Keyboard Dictation is supported by any interface element that supports TextKit (such as UITextField or UITextArea) and is activated by the user clicking the Dictation Button (directly to the left of the spacebar) in the iOS virtual keyboard.

Společnost Apple vydala následující statistiky diktování klávesnice (shromážděné od 2011):Apple has released the following Keyboard Dictation statistics (collected since 2011):

  • Diktování klávesnice se běžně používá od vydání v iOS 5.Keyboard Dictation has been widely used since it was released in iOS 5.
  • Přibližně 65 000 využití aplikací za den.Approximately 65,000 apps use it per day.
  • O třetině všech diktování iOS se provádí v aplikaci třetí strany.About a third of all iOS Dictation is done in a 3rd party app.

Diktování klávesnice se velmi snadno používá, protože nevyžaduje žádné úsilí na část vývojáře, kromě použití prvku rozhraní TextKit v návrhu uživatelského rozhraní aplikace.Keyboard Dictation is extremely easy to use as it requires no effort on the developer's part, other than using a TextKit interface element in the app's UI design. Diktování klávesnice má také výhodu, že z aplikace nevyžadují žádné speciální požadavky na oprávnění, aby ji bylo možné použít.Keyboard Dictation also has the advantage of not requiring any special privilege requests from the app before it can be used.

Aplikace, které používají nová rozhraní API pro rozpoznávání řeči, budou vyžadovat udělení zvláštního oprávnění uživateli, protože rozpoznávání řeči vyžaduje přenos a dočasné úložiště dat na serverech společnosti Apple.Apps that use the new Speech Recognition APIs will require special permissions to be granted by the user, since speech recognition requires the transmission and temporary storage of data on Apple's servers. Podrobnosti najdete v dokumentaci k vylepšení zabezpečení a ochrany osobních údajů .Please see our Security and Privacy Enhancements documentation for details.

I když je diktování klávesnice snadno naimplementované, přináší několik omezení a nevýhod:While Keyboard Dictation is easy to implement, it does come with several limitations and disadvantages:

  • Vyžaduje použití pole textové zadání a zobrazení klávesnice.It requires the use of a Text Input Field and display of a keyboard.
  • Funguje jenom s živým zvukovým vstupem a aplikace nemá žádnou kontrolu nad procesem záznamu zvuku.It works with live audio input only and the app has no control over the audio recording process.
  • Neposkytuje žádnou kontrolu nad jazykem, který se používá k interpretaci řeči uživatele.It provides no control over the language that is used to interpret the user's speech.
  • Neexistuje žádný způsob, jak aplikace zjistit, jestli je tlačítko diktování pro uživatele ještě dostupné.There is no way for the app to know if the Dictation button is even available to the user.
  • Aplikace nemůže přizpůsobit proces záznamu zvuku.The app cannot customize the audio recording process.
  • Poskytuje velmi bezstavové sady výsledků, které postrádají informace, jako je časování a důvěra.It provides a very shallow set of results that lacks information such as timing and confidence.

Rozhraní API pro rozpoznávání řečiSpeech Recognition API

Novinka v systému iOS 10, společnost Apple vydala rozhraní API pro rozpoznávání řeči, které poskytuje efektivnější způsob, jak aplikace pro iOS implementuje rozpoznávání řeči.New to iOS 10, Apple has released the Speech Recognition API which provides a more powerful way for an iOS app to implement speech recognition. Toto rozhraní API se shoduje s tím, že Apple používá k napájení v Siri i diktování klávesnice a je schopný zajistit rychlý přepis se stavem přesnosti v umění.This API is the same one that Apple uses to power both Siri and Keyboard Dictation and it is capable of providing fast transcription with state of the art accuracy.

Výsledky poskytované rozhraním API pro rozpoznávání řeči jsou transparentně přizpůsobené jednotlivým uživatelům, a to bez toho, aby aplikace musela shromažďovat nebo přistupovat k soukromým uživatelským datům.The results provided by the Speech Recognition API are transparently customized to the individual users, without the app having to collect or access any private user data.

Rozhraní API pro rozpoznávání řeči poskytuje výsledky zpátky do volající aplikace téměř v reálném čase, protože uživatel mluví a poskytuje další informace o výsledcích překladu než jenom text.The Speech Recognition API provides results back to the calling app in near real-time as the user is speaking and it provides more information about the results of translation than just text. Mezi ně patří:These include:

  • Několik výkladů, které uživatel uvedli.Multiple interpretations of what the user said.
  • Úrovně spolehlivosti pro jednotlivé překlady.Confidence levels for the individual translations.
  • Informace o časování.Timing information.

Jak je uvedeno výše, zvuk pro překlad lze poskytnout buď živým kanálem, nebo z předem nahraného zdroje a v jakémkoli z více než 50 jazyků a dialektů podporovaných systémem iOS 10.As stated above, audio for translation can be provided either by a live feed, or from pre-recorded source and in any of the over 50 languages and dialects supported by iOS 10.

Rozhraní API pro rozpoznávání řeči se dá použít na jakémkoli zařízení iOS se systémem iOS 10 a ve většině případů vyžaduje živé připojení k Internetu, protože k hromadnému překladu dochází na serverech Apple.The Speech Recognition API can be used on any iOS device running iOS 10 and in most cases, requires a live internet connection since the bulk of the translations takes place on Apple's servers. Tato část uvádí, že některá novější zařízení s iOS podporují u konkrétních jazyků neustále zapnutý překlad na zařízení.That said, some newer iOS devices support always on, on-device translation of specific languages.

Společnost Apple zahrnovala rozhraní API dostupnosti k určení, jestli je daný jazyk k dispozici pro překlad v aktuálním okamžiku.Apple has included an Availability API to determine if a given language is available for translation at the current moment. Aplikace by měla používat toto rozhraní API místo testování přímo na připojení k Internetu.The app should use this API instead of testing for internet connectivity itself directly.

Jak je uvedeno výše v části diktování klávesnice, rozpoznávání řeči vyžaduje přenos a dočasné úložiště dat na serverech společnosti Apple přes Internet a jako takový musí aplikace požádat uživatele o oprávnění k provedení rozpoznávání zahrnutím NSSpeechRecognitionUsageDescription klíče do Info.plist souboru a voláním SFSpeechRecognizer.RequestAuthorization metody.As noted above in the Keyboard Dictation section, speech recognition requires the transmission and temporary storage of data on Apple's servers over the internet, and as such, the app must request the user's permission to perform recognition by including the NSSpeechRecognitionUsageDescription key in its Info.plist file and calling the SFSpeechRecognizer.RequestAuthorization method.

Na základě zdroje zvukového zvuku, který se používá pro rozpoznávání řeči, může být nutné provést další změny v Info.plist souboru aplikace.Based on the source of the audio being used for Speech Recognition, other changes to the app's Info.plist file may be required. Podrobnosti najdete v dokumentaci k vylepšení zabezpečení a ochrany osobních údajů .Please see our Security and Privacy Enhancements documentation for details.

Přijetí rozpoznávání řeči v aplikaciAdopting Speech Recognition in an App

Existují čtyři hlavní kroky, které vývojář musí provést, aby bylo možné v aplikaci pro iOS přijmout rozpoznávání řeči:There are four major steps that the developer must take to adopt speech recognition in an iOS app:

  • Zadejte popis použití v Info.plist souboru aplikace pomocí NSSpeechRecognitionUsageDescription klíče.Provide a usage description in the app's Info.plist file using the NSSpeechRecognitionUsageDescription key. Například aplikace kamery může obsahovat následující popis, což vám umožní pořizovat fotografii pouhým slovem "sýr".For example, a camera app might include the following description, "This allows you to take a photo just by saying the word 'cheese'."
  • Požádejte o autorizaci voláním SFSpeechRecognizer.RequestAuthorization metody, která prezentuje vysvětlení (poskytované výše uvedeným NSSpeechRecognitionUsageDescription klíčem), proč aplikace potřebuje přístup k rozpoznávání řeči uživateli v dialogovém okně a umožní jim přijmout nebo odmítnout.Request authorization by calling the SFSpeechRecognizer.RequestAuthorization method to present an explanation (provided in the NSSpeechRecognitionUsageDescription key above) of why the app wants speech recognition access to the user in a dialog box and allow them to accept or decline.
  • Vytvořit požadavek na rozpoznávání řeči:Create a Speech Recognition Request:
    • V případě předem zaznamenaného zvuku na disku použijte SFSpeechURLRecognitionRequest třídu.For pre-recorded audio on disk, use the SFSpeechURLRecognitionRequest class.
    • Pro živý zvuk (nebo zvuk z paměti) použijte SFSPeechAudioBufferRecognitionRequest třídu.For live audio (or audio from memory), use the SFSPeechAudioBufferRecognitionRequest class.
  • Zahajte rozpoznávání řeči předáním požadavku na rozpoznávání řeči ( SFSpeechRecognizer ).Pass the Speech Recognition Request to a Speech Recognizer (SFSpeechRecognizer) to begin recognition. Aplikace může volitelně umístit na vrácenou SFSpeechRecognitionTask možnost monitorování a sledovat výsledky rozpoznávání.The app can optionally hold onto the returned SFSpeechRecognitionTask to monitor and track the recognition results.

Tyto kroky jsou podrobněji popsány níže.These steps will be covered in detail below.

Zadání popisu použitíProviding a Usage Description

Chcete-li NSSpeechRecognitionUsageDescription v souboru zadat požadovaný klíč Info.plist , postupujte následovně:To provide the required NSSpeechRecognitionUsageDescription key in the Info.plist file, do the following:

  1. Dvakrát klikněte na Info.plist soubor a otevřete ho pro úpravy.Double-click the Info.plist file to open it for editing.

  2. Přepněte do zobrazení zdroje :Switch to the Source view:

    Zobrazení zdrojeThe Source view

  3. Klikněte na tlačítko Přidat novou položkua NSSpeechRecognitionUsageDescription jako hodnotu Zadejte vlastnostpro String typ a Popis použití . ValueClick on Add New Entry, enter NSSpeechRecognitionUsageDescription for the Property, String for the Type and a Usage Description as the Value. Příklad:For example:

    Přidání NSSpeechRecognitionUsageDescriptionAdding NSSpeechRecognitionUsageDescription

  4. Pokud bude aplikace zpracovávat živý přepis, bude také vyžadovat popis použití mikrofonu.If the app will be handling live audio transcription, it will also require a Microphone Usage Description. Klikněte na tlačítko Přidat novou položkua NSMicrophoneUsageDescription jako hodnotu Zadejte vlastnostpro String typ a Popis použití . ValueClick on Add New Entry, enter NSMicrophoneUsageDescription for the Property, String for the Type and a Usage Description as the Value. Příklad:For example:

    Přidání NSMicrophoneUsageDescriptionAdding NSMicrophoneUsageDescription

  5. Uložte změny souboru.Save the changes to the file.

Důležité

Pokud se nedaří poskytnout některé z výše uvedených Info.plist klíčů ( NSSpeechRecognitionUsageDescription nebo), NSMicrophoneUsageDescription může dojít k selhání aplikace bez upozornění při pokusu o přístup k rozpoznávání řeči nebo k mikrofonu pro živý zvuk.Failing to provide either of the above Info.plist keys (NSSpeechRecognitionUsageDescription or NSMicrophoneUsageDescription) can result in the app failing without warning when trying to access either Speech Recognition or the microphone for live audio.

Žádost o autorizaciRequesting Authorization

Pokud chcete požádat o autorizaci uživatelů, která umožňuje aplikaci získat přístup k rozpoznávání řeči, upravte třídu řadiče Main View a přidejte následující kód:To request the required user authorization that allows the app to access speech recognition, edit the main View Controller class and add the following code:

using System;
using UIKit;
using Speech;

namespace MonkeyTalk
{
    public partial class ViewController : UIViewController
    {
        protected ViewController (IntPtr handle) : base (handle)
        {
            // Note: this .ctor should not contain any initialization logic.
        }

        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Request user authorization
            SFSpeechRecognizer.RequestAuthorization ((SFSpeechRecognizerAuthorizationStatus status) => {
                // Take action based on status
                switch (status) {
                case SFSpeechRecognizerAuthorizationStatus.Authorized:
                    // User has approved speech recognition
                    ...
                    break;
                case SFSpeechRecognizerAuthorizationStatus.Denied:
                    // User has declined speech recognition
                    ...
                    break;
                case SFSpeechRecognizerAuthorizationStatus.NotDetermined:
                    // Waiting on approval
                    ...
                    break;
                case SFSpeechRecognizerAuthorizationStatus.Restricted:
                    // The device is not permitted
                    ...
                    break;
                }
            });
        }
    }
}

RequestAuthorizationMetoda SFSpeechRecognizer třídy bude vyžadovat oprávnění od uživatele pro přístup k rozpoznávání řeči pomocí důvodu, že vývojář poskytl NSSpeechRecognitionUsageDescription klíč Info.plist souboru.The RequestAuthorization method of the SFSpeechRecognizer class will request permission from the user to access speech recognition using the reason that the developer provided in the NSSpeechRecognitionUsageDescription key of the Info.plist file.

SFSpeechRecognizerAuthorizationStatusVýsledek se vrátí do RequestAuthorization rutiny zpětného volání metody, kterou lze použít k provedení akce na základě oprávnění uživatele.A SFSpeechRecognizerAuthorizationStatus result is returned to the RequestAuthorization method's callback routine that can be used to take action based on the user's permission.

Důležité

Apple navrhuje počkat, dokud uživatel nespustil akci v aplikaci, která před vyžádáním tohoto oprávnění vyžaduje rozpoznávání řeči.Apple suggests waiting until the user has started an action in the app that requires speech recognition before requesting this permission.

Rozpoznávání předem zaznamenaného řečiRecognizing Pre-Recorded Speech

Pokud aplikace chce rozpoznávat řeč z předem zaznamenaného souboru WAV nebo MP3, může použít následující kód:If the app wants to recognize speech from a pre-recorded WAV or MP3 file, it can use the following code:

using System;
using UIKit;
using Speech;
using Foundation;
...

public void RecognizeFile (NSUrl url)
{
    // Access new recognizer
    var recognizer = new SFSpeechRecognizer ();

    // Is the default language supported?
    if (recognizer == null) {
        // No, return to caller
        return;
    }

    // Is recognition available?
    if (!recognizer.Available) {
        // No, return to caller
        return;
    }

    // Create recognition task and start recognition
    var request = new SFSpeechUrlRecognitionRequest (url);
    recognizer.GetRecognitionTask (request, (SFSpeechRecognitionResult result, NSError err) => {
        // Was there an error?
        if (err != null) {
            // Handle error
            ...
        } else {
            // Is this the final translation?
            if (result.Final) {
                Console.WriteLine ("You said, \"{0}\".", result.BestTranscription.FormattedString);
            }
        }
    });
}

Podrobné prohlížení tohoto kódu se nejprve pokusí vytvořit nástroj pro rozpoznávání řeči ( SFSpeechRecognizer ).Looking at this code in detail, first, it attempts to create a Speech Recognizer (SFSpeechRecognizer). Pokud výchozí jazyk není podporován pro rozpoznávání řeči, null je vrácen a funkce se ukončí.If the default language isn't supported for speech recognition, null is returned and the functions exits.

Pokud je pro výchozí jazyk k dispozici nástroj pro rozpoznávání řeči, aplikace zkontroluje, jestli je v tuto chvíli k dispozici pro rozpoznávání pomocí Available Vlastnosti.If the Speech Recognizer is available for the default language, the app checks to see if it is currently available for recognition using the Available property. Například deaktivace nemusí být k dispozici, pokud zařízení nemá aktivní připojení k Internetu.For example, recognition might not be available if the device doesn't have an active internet connection.

Vytvoří SFSpeechUrlRecognitionRequest se z NSUrl umístění předem nahraného souboru v zařízení se systémem iOS a je předána nástroji pro rozpoznávání řeči ke zpracování rutinou zpětného volání.A SFSpeechUrlRecognitionRequest is created from the NSUrl location of the pre-recorded file on the iOS device and it is handed to the Speech Recognizer to process with a callback routine.

Při volání zpětného volání, pokud NSError není null k dispozici chyba, která musí být zpracována.When the callback is called, if the NSError isn't null there has been an error that must be handled. Vzhledem k tomu, že rozpoznávání řeči je provedeno přírůstkově, může být rutina zpětného volání volána více než jednou, takže SFSpeechRecognitionResult.Final vlastnost je testována, aby zjistila, zda je překlad dokončen a aby byla zapsána nejlepší verze překladu ( BestTranscription ).Because speech recognition is done incrementally, the callback routine may be called more than once so the SFSpeechRecognitionResult.Final property is tested to see if the translation is complete and best version of the translation is written out (BestTranscription).

Rozpoznávání živého řečiRecognizing Live Speech

Pokud aplikace chce rozpoznávat živý řeč, je tento proces velmi podobný rozpoznávání předem zaznamenaného hlasu.If the app wants to recognize live speech, the process is very similar to recognizing pre-recorded speech. Příklad:For example:

using System;
using UIKit;
using Speech;
using Foundation;
using AVFoundation;
...

#region Private Variables
private AVAudioEngine AudioEngine = new AVAudioEngine ();
private SFSpeechRecognizer SpeechRecognizer = new SFSpeechRecognizer ();
private SFSpeechAudioBufferRecognitionRequest LiveSpeechRequest = new SFSpeechAudioBufferRecognitionRequest ();
private SFSpeechRecognitionTask RecognitionTask;
#endregion
...

public void StartRecording ()
{
    // Setup audio session
    var node = AudioEngine.InputNode;
    var recordingFormat = node.GetBusOutputFormat (0);
    node.InstallTapOnBus (0, 1024, recordingFormat, (AVAudioPcmBuffer buffer, AVAudioTime when) => {
        // Append buffer to recognition request
        LiveSpeechRequest.Append (buffer);
    });

    // Start recording
    AudioEngine.Prepare ();
    NSError error;
    AudioEngine.StartAndReturnError (out error);

    // Did recording start?
    if (error != null) {
        // Handle error and return
        ...
        return;
    }

    // Start recognition
    RecognitionTask = SpeechRecognizer.GetRecognitionTask (LiveSpeechRequest, (SFSpeechRecognitionResult result, NSError err) => {
        // Was there an error?
        if (err != null) {
            // Handle error
            ...
        } else {
            // Is this the final translation?
            if (result.Final) {
                Console.WriteLine ("You said \"{0}\".", result.BestTranscription.FormattedString);
            }
        }
    });
}

public void StopRecording ()
{
    AudioEngine.Stop ();
    LiveSpeechRequest.EndAudio ();
}

public void CancelRecording ()
{
    AudioEngine.Stop ();
    RecognitionTask.Cancel ();
}

Podrobné prohlížení tohoto kódu vytváří několik soukromých proměnných pro zpracování procesu rozpoznávání:Looking at this code in detail, it creates several private variables to handle the recognition process:

private AVAudioEngine AudioEngine = new AVAudioEngine ();
private SFSpeechRecognizer SpeechRecognizer = new SFSpeechRecognizer ();
private SFSpeechAudioBufferRecognitionRequest LiveSpeechRequest = new SFSpeechAudioBufferRecognitionRequest ();
private SFSpeechRecognitionTask RecognitionTask;

Pomocí AV Foundation zaznamenává zvuk, který se předává k žádosti o SFSpeechAudioBufferRecognitionRequest rozpoznání:It uses AV Foundation to record audio that will be passed to a SFSpeechAudioBufferRecognitionRequest to handle the recognition request:

var node = AudioEngine.InputNode;
var recordingFormat = node.GetBusOutputFormat (0);
node.InstallTapOnBus (0, 1024, recordingFormat, (AVAudioPcmBuffer buffer, AVAudioTime when) => {
    // Append buffer to recognition request
    LiveSpeechRequest.Append (buffer);
});

Aplikace se pokusí spustit záznam a všechny chyby budou zpracovány, pokud záznam nelze spustit:The app attempts to start recording and any errors are handled if the recording cannot be started:

AudioEngine.Prepare ();
NSError error;
AudioEngine.StartAndReturnError (out error);

// Did recording start?
if (error != null) {
    // Handle error and return
    ...
    return;
}

Spustí se úloha rozpoznávání a zachová se popisovač úlohy rozpoznávání ( SFSpeechRecognitionTask ):The recognition task is started and a handle is kept to the Recognition Task (SFSpeechRecognitionTask):

RecognitionTask = SpeechRecognizer.GetRecognitionTask (LiveSpeechRequest, (SFSpeechRecognitionResult result, NSError err) => {
    ...
});

Zpětné volání se používá podobným způsobem jako ten použitý výše na předem zaznamenaném rozpoznávání řeči.The callback is used in a similar fashion to the one used above on pre-recorded speech.

Pokud uživatel záznam zastaví, bude informován zvukový stroj i požadavek na rozpoznávání řeči:If recording is stoped by the user, both the Audio Engine and the Speech Recognition Request are informed:

AudioEngine.Stop ();
LiveSpeechRequest.EndAudio ();

Pokud uživatel zruší rozpoznávání, bude informován zvukový modul a úloha rozpoznávání:If the user cancels recognition, then the Audio Engine and Recognition Task are informed:

AudioEngine.Stop ();
RecognitionTask.Cancel ();

Je důležité volat, RecognitionTask.Cancel Pokud uživatel zruší překlad, aby uvolnil jak paměť, tak i procesor zařízení.It is important to call RecognitionTask.Cancel if the user cancels the translation to free up both memory and the device's processor.

Důležité

Neúspěšné poskytnutí NSSpeechRecognitionUsageDescription NSMicrophoneUsageDescription Info.plist klíčů nebo může způsobit selhání aplikace bez upozornění při pokusu o přístup k rozpoznávání řeči nebo mikrofonu pro živý zvuk ( var node = AudioEngine.InputNode; ).Failing to provide the NSSpeechRecognitionUsageDescription or NSMicrophoneUsageDescription Info.plist keys can result in the app failing without warning when trying to access either Speech Recognition or the microphone for live audio (var node = AudioEngine.InputNode;). Další informace najdete v části zadání popisu použití výše.Please see the Providing a Usage Description section above for more information.

Omezení rozpoznávání řečiSpeech Recognition Limits

Při práci s rozpoznáváním řeči v aplikaci pro iOS přináší společnost Apple následující omezení:Apple imposes the following limitations when working with Speech Recognition in an iOS app:

  • Rozpoznávání řeči je zdarma pro všechny aplikace, ale jeho použití není neomezené:Speech Recognition is free to all apps, but its usage is not unlimited:
    • Jednotlivá zařízení s iOS mají omezený počet rozpoznávání, která se dají provést za den.Individual iOS devices have a limited number of recognitions that can be performed per day.
    • Aplikace se omezují globálně na základě žádosti na den.Apps will be throttled globally on a request-per-day basis.
  • Aplikace musí být připravená zpracovat síťové připojení rozpoznávání řeči a chyby omezení četnosti využití.The app must be prepared to handle Speech Recognition network connection and usage rate limit failures.
  • Rozpoznávání řeči může mít vysoké náklady na vyprázdnění baterie i vysoké síťové přenosy na zařízení s iOS daného uživatele, a to z toho důvodu, že Apple omezuje striktní dobu trvání zvuku přibližně na jednu minutu maximálního množství řeči.Speech Recognition can have a high cost in both battery drain and high network traffic on the user's iOS device, because of this, Apple imposes a strict audio duration limit of approximately one minute of speech max.

Pokud aplikace zasáhne své limity omezování rychlosti, požádá Apple, aby je kontaktoval.If an app is routinely hitting its rate-throttling limits, Apple asks that the developer contact them.

Požadavky na ochranu osobních údajů a použitelnostPrivacy and Usability Considerations

Apple má následující návrh, který je transparentní a respektuje ochranu osobních údajů uživatele při zahrnutí rozpoznávání řeči v aplikaci pro iOS:Apple has the following suggestion for being transparent and respecting the user's privacy when including Speech Recognition in an iOS app:

  • Při zaznamenávání řeči uživatele nezapomeňte jasně označit, že záznam probíhá v uživatelském rozhraní aplikace.When recording the user's speech, be sure to clearly indicate that recording is taking place in the app's User Interface. Aplikace může například přehrát zvuk "záznam" a zobrazit indikátor záznamu.For example, the app might play a "recording" sound and display a recording indicator.
  • Nepoužívejte rozpoznávání řeči pro citlivé uživatelské informace, jako jsou hesla, data o stavu nebo finanční informace.Don't use Speech Recognition for sensitive user information such as passwords, health data or financial information.
  • Zobrazit výsledky rozpoznávání před tím, než na nich budou pracovat.Show the recognition results before acting on them. To nejen poskytuje zpětnou vazbu k tomu, co aplikace dělá, ale umožňuje uživateli zpracovat chyby rozpoznávání při jejich provedení.This not only provides feedback as to what the app is doing, but allows the user to handle recognition errors as they are made.

SouhrnSummary

V tomto článku jsme si poznamenali nové rozhraní API pro rozpoznávání řeči a ukázali, jak ho implementovat v aplikaci Xamarin. iOS, aby se podporovalo nepřetržité rozpoznávání řeči a přepisovat řeči (z živých nebo zaznamenaných zvukových streamů) do textu.This article has presented the new Speech API and showed how to implement it in a Xamarin.iOS app to support continuous speech recognition and transcribe speech (from live or recorded audio streams) into text.