Mi a Batch-átírás?What is batch transcription?

A Batch átírása REST API művelet, amely lehetővé teszi nagy mennyiségű hang tárolását.Batch transcription is a set of REST API operations that enables you to transcribe a large amount of audio in storage. A hangfájlok közös hozzáférésű aláírási (SAS) URI-val, az átírási eredmények aszinkron fogadásával is megadhatók.You can point to audio files with a shared access signature (SAS) URI and asynchronously receive transcription results.

Az aszinkron beszéd – szöveg átírása csak az egyik funkció.Asynchronous speech-to-text transcription is just one of the features. A Batch átírása REST API-kkal a következő módszereket hívhatja:You can use batch transcription REST APIs to call the following methods:

Kötegelt átírási műveletBatch Transcription Operation MódszerMethod REST API hívásREST API Call
Új átírást hoz létre.Creates a new transcription. POSTPOST API/speechtotext/v 2.0/átiratokapi/speechtotext/v2.0/transcriptions
Lekéri a hitelesített előfizetéshez tartozó átírások listáját.Retrieves a list of transcriptions for the authenticated subscription. GETGET API/speechtotext/v 2.0/átiratokapi/speechtotext/v2.0/transcriptions
Lekéri a támogatott területi beállítások listáját az offline átírásokhoz.Gets a list of supported locales for offline transcriptions. GETGET API/speechtotext/v 2.0/átiratok/területi beállításokapi/speechtotext/v2.0/transcriptions/locales
Frissíti az azonosító alapján azonosított átirat megváltoztathatatlan részleteit.Updates the mutable details of the transcription identified by its ID. JAVÍTÁSPATCH API/speechtotext/v 2.0/átiratok/{azonosító}api/speechtotext/v2.0/transcriptions/{id}
Törli a megadott átírási feladatot.Deletes the specified transcription task. DELETEDELETE API/speechtotext/v 2.0/átiratok/{azonosító}api/speechtotext/v2.0/transcriptions/{id}
Lekéri az adott azonosító által azonosított átírást.Gets the transcription identified by the given ID. GETGET API/speechtotext/v 2.0/átiratok/{azonosító}api/speechtotext/v2.0/transcriptions/{id}

Áttekintheti és tesztelheti a részletes API-t, amely egy hencegő dokumentumkéntérhető el Custom Speech transcriptionsa fejléc alatt.You can review and test the detailed API, which is available as a Swagger document, under the heading Custom Speech transcriptions.

A Batch-átírási feladatok ütemezése a lehető legjobb megoldás szerint történik.Batch transcription jobs are scheduled on a best effort basis. Jelenleg nincs becslés arra az időpontra, amikor a feladatok a futó állapotba változnak.Currently there is no estimate for when a job changes into the running state. A normál rendszerterhelés alatt perceken belül meg kell történnie.Under normal system load, it should happen within minutes. A futó állapotban a tényleges átírást a rendszer gyorsabban dolgozza fel, mint a valós időben.Once in the running state, the actual transcription is processed faster than the audio real time.

A könnyen használható API mellett nem kell egyéni végpontokat telepítenie, és nem rendelkezik egyidejűségi követelményekkel a megfigyeléshez.Next to the easy-to-use API, you don't need to deploy custom endpoints, and you don't have any concurrency requirements to observe.

ElőfeltételekPrerequisites

Előfizetői azonosítóSubscription Key

Ahogy a Speech Service összes funkciója esetében, létrehozhat egy előfizetési kulcsot a Azure Portal az első lépéseket ismertető útmutatóban.As with all features of the Speech service, you create a subscription key from the Azure portal by following our Get started guide.

Megjegyzés

A Batch-átírás használatához standard előfizetés (S0) szükséges a Speech Service-hez.A standard subscription (S0) for Speech service is required to use batch transcription. Az ingyenes előfizetési kulcsok (F0) nem működnek.Free subscription keys (F0) don't work. További információ: díjszabás és korlátok.For more information, see pricing and limits.

Egyéni modellekCustom models

Ha az akusztikai vagy nyelvi modellek testreszabását tervezi, kövesse az akusztikus modellek testreszabása és a testreszabási nyelvi modellektestreszabása című témakör lépéseit.If you plan to customize acoustic or language models, follow the steps in Customize acoustic models and Design customization language models. Ha a létrehozott modelleket a Batch-átírásban szeretné használni, szüksége lesz a modell-azonosítóra.To use the created models in batch transcription, you need their model IDs. A modell AZONOSÍTÓját a modell részleteinek vizsgálatakor kérheti le.You can retrieve the model ID when you inspect the details of the model. A Batch átíró szolgáltatáshoz nem szükséges egy telepített egyéni végpont.A deployed custom endpoint is not needed for the batch transcription service.

A Batch-átírási APIThe Batch Transcription API

Támogatott formátumokSupported formats

A Batch transzkripciós API a következő formátumokat támogatja:The Batch Transcription API supports the following formats:

FormátumFormat CodecCodec SávszélességűBitrate Mintavételezési aránySample Rate
WAVWAV PCMPCM 16 bites16-bit 8 kHz vagy 16 kHz, monó vagy sztereó8 kHz or 16 kHz, mono or stereo
MP3MP3 PCMPCM 16 bites16-bit 8 kHz vagy 16 kHz, monó vagy sztereó8 kHz or 16 kHz, mono or stereo
VORBISOGG OPUSOPUS 16 bites16-bit 8 kHz vagy 16 kHz, monó vagy sztereó8 kHz or 16 kHz, mono or stereo

A sztereó hangadatfolyamok esetében a bal és a jobb oldali csatorna az átírás során oszlik meg.For stereo audio streams, the left and right channels are split during the transcription. Minden csatornához létre kell hozni egy JSON-eredményhalmaz fájlját.For each channel, a JSON result file is being created. A Kimondás után generált időbélyegek lehetővé teszik a fejlesztő számára a rendezett végső átirat létrehozását.The timestamps generated per utterance enable the developer to create an ordered final transcript.

KonfigurációConfiguration

A konfigurációs paraméterek JSON-ként vannak megadva:Configuration parameters are provided as JSON:

{
  "recordingsUrl": "<URL to the Azure blob to transcribe>",
  "models": [{"Id":"<optional acoustic model ID>"},{"Id":"<optional language model ID>"}],
  "locale": "<locale to use, for example en-US>",
  "name": "<user defined name of the transcription batch>",
  "description": "<optional description of the transcription>",
  "properties": {
    "ProfanityFilterMode": "None | Removed | Tags | Masked",
    "PunctuationMode": "None | Dictated | Automatic | DictatedAndAutomatic",
    "AddWordLevelTimestamps" : "True | False",
    "AddSentiment" : "True | False",
    "AddDiarization" : "True | False",
    "TranscriptionResultsContainerUrl" : "<service SAS URI to Azure container to store results into (write permission required)>"
  }
}

Konfigurációs tulajdonságokConfiguration properties

Ezeket a választható tulajdonságokat az átírás konfigurálásához használhatja:Use these optional properties to configure transcription:

ParaméterParameter

LeírásDescription

ProfanityFilterMode

Meghatározza, hogyan kezelhető a káromkodás az eredmények felismerésében.Specifies how to handle profanity in recognition results. Az elfogadott értékek None a káromkodás szűrésének letiltására, Masked a káromkodás és a csillagokkal Removed való kiváltására, az eredményből való Tags káromkodás eltávolítására, vagy a "káromkodás" címkék hozzáadására szolgálnak.Accepted values are None to disable profanity filtering, Masked to replace profanity with asterisks, Removed to remove all profanity from the result, or Tags to add "profanity" tags. Az alapértelmezett beállítás: Masked.The default setting is Masked.

PunctuationMode

Meghatározza, hogyan kezelhető a központozás a felismerési eredményekben.Specifies how to handle punctuation in recognition results. Az elfogadott értékek None az Dictated írásjelek letiltására szolgálnak, a explicit (szóbeli) Automatic írásjelek megjelenítéséhez, hogy a dekóder a központozással legyen kezelve, vagy DictatedAndAutomatic pedig diktált és automatikus írásjeleket használjon.Accepted values are None to disable punctuation, Dictated to imply explicit (spoken) punctuation, Automatic to let the decoder deal with punctuation, or DictatedAndAutomatic to use dictated and automatic punctuation. Az alapértelmezett beállítás: DictatedAndAutomatic.The default setting is DictatedAndAutomatic.

AddWordLevelTimestamps

Megadja, hogy a rendszer hozzáadja-e a Word szintű időbélyegeket a kimenethez.Specifies if word level timestamps should be added to the output. Az elfogadott értékek true lehetővé teszik a Word szintű időbélyegek és false a (az alapértelmezett érték) letiltását.Accepted values are true to enable word level timestamps and false (the default value) to disable it.

AddSentiment

Itt adható meg, hogy a rendszer a kiértékelésre alkalmazza-e az érzelmi elemzést.Specifies if sentiment analysis should be applied to the utterance. Az elfogadott értékek true lehetővé teszik a false (az alapértelmezett érték) engedélyezését és letiltását.Accepted values are true to enable and false (the default value) to disable it. További részletekért tekintse meg Hangulatelemzés .See Sentiment Analysis for more detail.

AddDiarization

Meghatározza, hogy a diarization-elemzést a bemeneten kell végrehajtani, amely a várt két hangokat tartalmazó monó-csatorna.Specifies that diarization analysis should be carried out on the input, which is expected to be mono channel containing two voices. Az elfogadott értékek true lehetővé teszik a false diarization és (az alapértelmezett érték) letiltását.Accepted values are true enabling diarization and false (the default value) to disable it. Azt is megköveteli AddWordLevelTimestamps , hogy igaz értékre legyen állítva.It also requires AddWordLevelTimestamps to be set to true.

TranscriptionResultsContainerUrl

Opcionális URL-cím a Service sas -vel egy írható tárolóhoz az Azure-ban.Optional URL with service SAS to a writeable container in Azure. Az eredmény ebben a tárolóban tárolódik.The result is stored in this container.

StorageStorage

A Batch átirata támogatja az Azure Blob Storage -t, hogy hang-és írási átírásokat olvasson a tárolóba.Batch transcription supports Azure Blob storage for reading audio and writing transcriptions to storage.

A Batch átírásának eredményeThe batch transcription result

A Mono bemeneti hang esetében egy átírási eredményű fájl jön létre.For mono input audio, one transcription result file is being created. Sztereó bemeneti hang esetén két transzkripciós eredmény-fájl jön létre.For stereo input audio, two transcription result files are being created. Mindegyik a következő struktúrával rendelkezik:Each has this structure:

{
  "AudioFileResults":[
    {
      "AudioFileName": "Channel.0.wav | Channel.1.wav"      'maximum of 2 channels supported'
      "AudioFileUrl": null                                  'always null'
      "AudioLengthInSeconds": number                        'Real number. Two decimal places'
      "CombinedResults": [
        {
          "ChannelNumber": null                             'always null'
          "Lexical": string
          "ITN": string
          "MaskedITN": string
          "Display": string
        }
      ]
      SegmentResults:[                                      'for each individual segment'
        {
          "RecognitionStatus": "Success | Failure"
          "ChannelNumber": null
          "SpeakerId": null | "1 | 2"                       'null if no diarization
                                                             or stereo input file, the
                                                             speakerId as a string if
                                                             diarization requested for
                                                             mono audio file'
          "Offset": number                                  'time in ticks (1 tick is 100 nanosec)'
          "Duration": number                                'time in ticks (1 tick is 100 nanosec)'
          "OffsetInSeconds" : number                        'Real number. Two decimal places'
          "DurationInSeconds" : number                      'Real number. Two decimal places'
          "NBest": [
            {
              "Confidence": number                          'between 0 and 1'
              "Lexical": string
              "ITN": string
              "MaskedITN": string
              "Display": string
              "Sentiment":
                {                                           'this is omitted if sentiment is
                                                             not requested'
                  "Negative": number                        'between 0 and 1'
                  "Neutral": number                         'between 0 and 1'
                  "Positive": number                        'between 0 and 1'
                }
              "Words": [
                {
                  "Word": string
                  "Offset": number                          'time in ticks (1 tick is 100 nanosec)'
                  "Duration": number                        'time in ticks (1 tick is 100 nanosec)'
                  "OffsetInSeconds": number                 'Real number. Two decimal places'
                  "DurationInSeconds": number               'Real number. Two decimal places'
                  "Confidence": number                      'between 0 and 1'
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Az eredmény az alábbi űrlapokat tartalmazza:The result contains these forms:

ŰrlapForm

TartalomContent

Lexical

A tényleges szavak felismerhetők.The actual words recognized.

ITN

Inverz szöveg – a felismert szöveg normalizált formája.Inverse-text-normalized form of the recognized text. A rövidítések ("doktor Smith" a "Dr Smith"), a telefonszámok és más átalakítások alkalmazása.Abbreviations ("doctor smith" to "dr smith"), phone numbers, and other transformations are applied.

MaskedITN

A ITN űrlap a káromkodás maszkolásával lett alkalmazva.The ITN form with profanity masking applied.

Display

A felismert szöveg megjelenítési formájaThe display form of the recognized text. A rendszer a hozzáadott írásjeleket és a nagybetűket is tartalmazza.Added punctuation and capitalization are included.

Beszélő elkülönítése (Diarization)Speaker separation (Diarization)

A Diarization a hangszórók elválasztásának folyamata egy hanganyagban.Diarization is the process of separating speakers in a piece of audio. A Batch-folyamat támogatja a diarization-t, és képes a Mono Channel-felvételek két hangszórójának felismerésére.Our Batch pipeline supports diarization and is capable of recognizing two speakers on mono channel recordings. A szolgáltatás nem érhető el a sztereó felvételeken.The feature is not available on stereo recordings.

Minden átírási kimenet SpeakerIdtartalmaz egy.All transcription output contains a SpeakerId. Ha a diarization nincs használatban, a "SpeakerId": null JSON-kimenetben jelenik meg.If diarization is not used, it shows "SpeakerId": null in the JSON output. A diarization két hangokat támogatunk, így a hangszórók a vagy "1" "2"a néven azonosíthatók.For diarization we support two voices, so the speakers are identified as "1" or "2".

A diarization igényléséhez egyszerűen hozzá kell adnia a megfelelő paramétert a HTTP-kérelemben az alább látható módon.To request diarization, you simply have to add the relevant parameter in the HTTP request as shown below.

{
 "recordingsUrl": "<URL to the Azure blob to transcribe>",
 "models": [{"Id":"<optional acoustic model ID>"},{"Id":"<optional language model ID>"}],
 "locale": "<locale to us, for example en-US>",
 "name": "<user defined name of the transcription batch>",
 "description": "<optional description of the transcription>",
 "properties": {
   "AddWordLevelTimestamps" : "True",
   "AddDiarization" : "True"
 }
}

A fenti kérelemben szereplő paraméterek esetében a Word-szintű időbélyegeket is be kell kapcsolni.Word-level timestamps would also have to be 'turned on' as the parameters in the above request indicate.

HangulatelemzésSentiment analysis

A hangulati funkció a hangban kifejezett érzést becsüli.The sentiment feature estimates the sentiment expressed in the audio. Az érzést 0 és 1 közötti érték fejezi ki a Negative, Neutrala és Positive a hangulat alapján.The sentiment is expressed by a value between 0 and 1 for Negative, Neutral, and Positive sentiment. Az érzelmi elemzés például a Call Center-forgatókönyvekben használható:For example, sentiment analysis can be used in call center scenarios:

  • Az ügyfelek elégedettségének megismeréseGet insight on customer satisfaction
  • Az ügynökök teljesítményének megismerése (a hívások fogadása)Get insight on the performance of the agents (team taking the calls)
  • Megkeresi a pontos időpontot, amikor a hívás negatív irányba váltFind the exact point in time when a call took a turn in a negative direction
  • Mi volt a negatív hívás pozitív irányba való bekapcsolásakorWhat went well when turning a negative call into a positive direction
  • Azonosítsa az ügyfeleket, mint a terméket vagy szolgáltatást?Identify what customers like and what they dislike about a product or a service

A hangulat egy hangszegmensen alapul, a lexikális elem alapján.Sentiment is scored per audio segment based on the lexical form. Az adott hangszegmens teljes szövege az érzelmek kiszámítására szolgál.The entire text within that audio segment is used to calculate sentiment. A teljes átíráshoz nincs kiszámítva összesített hangulat.No aggregate sentiment is being calculated for the entire transcription. A hangulat elemzése jelenleg csak az angol nyelven érhető el.Sentiment analysis is currently only available in the English language.

Megjegyzés

Javasoljuk Ehelyett a Microsoft Text Analytics API használatát.We recommend using the Microsoft Text Analytics API instead. Fejlettebb funkciókat kínál, mint például a legfontosabb kifejezés kinyerése, az automatikus nyelvfelismerés és egyebek.It offers more advanced features beyond sentiment analysis like key phrase extraction, automatic language detection, and more. A text Analytics dokumentációjábantalál információkat és mintákat.You can find information and samples in the Text Analytics documentation.

A JSON-kimenet mintája az alábbihoz hasonlóan néz ki:A JSON output sample looks like below:

{
  "AudioFileResults": [
    {
      "AudioFileName": "Channel.0.wav",
      "AudioFileUrl": null,
      "SegmentResults": [
        {
          "RecognitionStatus": "Success",
          "ChannelNumber": null,
          "Offset": 400000,
          "Duration": 13300000,
          "NBest": [
            {
              "Confidence": 0.976174,
              "Lexical": "what's the weather like",
              "ITN": "what's the weather like",
              "MaskedITN": "what's the weather like",
              "Display": "What's the weather like?",
              "Words": null,
              "Sentiment": {
                "Negative": 0.206194,
                "Neutral": 0.793785,
                "Positive": 0.0
              }
            }
          ]
        }
      ]
    }
  ]
}

Ajánlott eljárásokBest practices

Az átírási szolgáltatás nagy számú beküldött átírást képes kezelni.The transcription service can handle large number of submitted transcriptions. Az átírások GET állapotát az átírási módszerhasználatával kérdezheti le.You can query the status of your transcriptions through a GET on the transcriptions method. A take paraméter (néhány száz) megadásával megtarthatja az adatok megfelelő méretre való visszaküldését.Keep the information returned to a reasonable size by specifying the take parameter (a few hundred). Az eredmények lekérése után a szolgáltatásból rendszeresen törölje az átírásokat .Delete transcriptions regularly from the service once you retrieved the results. Ez garantálja az átírásos felügyeleti hívások gyors válaszait.This guarantees quick replies from the transcription management calls.

MintakódSample code

A teljes minták a GitHub minta adattárában érhetők el az samples/batch alkönyvtáron belül.Complete samples are available in the GitHub sample repository inside the samples/batch subdirectory.

Testre kell szabnia a mintakód előfizetési adatait, a szolgáltatási régiót, az olyan SAS URI-t, amely a hangfájlra mutat, és a modell-azonosítókat arra az esetre, ha egyéni akusztikai vagy nyelvi modellt szeretne használni.You have to customize the sample code with your subscription information, the service region, the SAS URI pointing to the audio file to transcribe, and model IDs in case you want to use a custom acoustic or language model.

// Replace with your subscription key
private const string SubscriptionKey = "YourSubscriptionKey";

// Update with your service region
private const string Region = "YourServiceRegion";
private const int Port = 443;

// recordings and locale
private const string Locale = "en-US";
private const string RecordingsBlobUri = "<SAS URI pointing to an audio file stored in Azure Blob Storage>";

// For usage of baseline models, no acoustic and language model needs to be specified.
private static Guid[] modelList = new Guid[0];

// For use of specific acoustic and language models:
// - comment the previous line
// - uncomment the next lines to create an array containing the guids of your required model(s)
// private static Guid AdaptedAcousticId = new Guid("<id of the custom acoustic model>");
// private static Guid AdaptedLanguageId = new Guid("<id of the custom language model>");
// private static Guid[] modelList = new[] { AdaptedAcousticId, AdaptedLanguageId };

//name and description
private const string Name = "Simple transcription";
private const string Description = "Simple transcription description";

A mintakód beállítja az ügyfelet, és elküldi az átírási kérelmet.The sample code sets up the client and submits the transcription request. Ezután lekérdezi az állapotadatok adatait, és kinyomtatja az átírási folyamat részleteit.It then polls for the status information and print details about the transcription progress.

// get all transcriptions for the user
transcriptions = await client.GetTranscriptionsAsync().ConfigureAwait(false);

completed = 0; running = 0; notStarted = 0;
// for each transcription in the list we check the status
foreach (var transcription in transcriptions)
{
    switch (transcription.Status)
    {
        case "Failed":
        case "Succeeded":
            // we check to see if it was one of the transcriptions we created from this client.
            if (!createdTranscriptions.Contains(transcription.Id))
            {
                // not created form here, continue
                continue;
            }
            completed++;

            // if the transcription was successful, check the results
            if (transcription.Status == "Succeeded")
            {
                var resultsUri0 = transcription.ResultsUrls["channel_0"];

                WebClient webClient = new WebClient();

                var filename = Path.GetTempFileName();
                webClient.DownloadFile(resultsUri0, filename);
                var results0 = File.ReadAllText(filename);
                var resultObject0 = JsonConvert.DeserializeObject<RootObject>(results0);
                Console.WriteLine(results0);

                Console.WriteLine("Transcription succeeded. Results: ");
                Console.WriteLine(results0);
            }
            else
            {
                Console.WriteLine("Transcription failed. Status: {0}", transcription.StatusMessage);
            }
            break;

        case "Running":
            running++;
            break;

        case "NotStarted":
            notStarted++;
            break;
    }
}

Az előző hívásokkal kapcsolatos részletes információkért tekintse meg a hencegő dokumentumot.For full details about the preceding calls, see our Swagger document. Az itt látható teljes minta esetében lépjen a githubra az samples/batch alkönyvtárban.For the full sample shown here, go to GitHub in the samples/batch subdirectory.

Jegyezze fel a hang-és átírási állapot küldésének aszinkron beállítását.Take note of the asynchronous setup for posting audio and receiving transcription status. A létrehozott ügyfél egy .NET HTTP-ügyfél.The client that you create is a .NET HTTP client. Létezik egy PostTranscriptions módszer a hangfájl részleteinek elküldésére, GetTranscriptions valamint az eredmények fogadására szolgáló metódusra.There's a PostTranscriptions method for sending the audio file details and a GetTranscriptions method for receiving the results. PostTranscriptionsegy leírót ad vissza GetTranscriptions , és a használatával létrehoz egy leírót az átirat állapotának lekéréséhez.PostTranscriptions returns a handle, and GetTranscriptions uses it to create a handle to get the transcription status.

Az aktuális mintakód nem ad meg egyéni modellt.The current sample code doesn't specify a custom model. A szolgáltatás az alapmodelleket használja a fájl vagy fájlok átírásához.The service uses the baseline models for transcribing the file or files. A modellek megadásához ugyanazt a módszert adja át, mint az akusztikus és a nyelvi modell azonosítói.To specify the models, you can pass on the same method as the model IDs for the acoustic and the language model.

Megjegyzés

Alapértékek átírásakor nem kell deklarálnia az alapmodellek AZONOSÍTÓját.For baseline transcriptions, you don't need to declare the ID for the baseline models. Ha csak a nyelvi modell AZONOSÍTÓját (és az akusztikus modell AZONOSÍTÓját) adta meg, a rendszer automatikusan kiválasztja a megfelelő akusztikus modellt.If you only specify a language model ID (and no acoustic model ID), a matching acoustic model is automatically selected. Ha csak az akusztikus modell AZONOSÍTÓját adta meg, a rendszer automatikusan kiválasztja a megfelelő nyelvi modellt.If you only specify an acoustic model ID, a matching language model is automatically selected.

A minta letöltéseDownload the sample

A mintát a GitHub- samples/batch minta adattárábantalálható könyvtárban találja.You can find the sample in the samples/batch directory in the GitHub sample repository.

További lépésekNext steps