Capire i risultati del riconoscimento vocale
Indipendentemente dall'interfaccia che utilizzi, il servizio IBM Watson® Speech to Text restituisce risultati di trascrizione che riflettono i parametri che specifichi. Il servizio restituisce tutto il contenuto della risposta JSON nel set di caratteri UTF-8.
Risposta della trascrizione di base
Il servizio restituisce la seguente risposta per gli esempi in Effettuare una richiesta di riconoscimento vocale. Gli esempi passano solo un file audio e il suo tipo di contenuto. L'audio pronuncia una singola frase senza pause evidenti tra le parole.
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.96,
"transcript": "several tornadoes touch down as a line of severe thunderstorms swept through Colorado on Sunday "
}
],
"final": true
}
]
}
Il servizio restituisce un oggetto SpeechRecognitionResults
, che è l'oggetto di risposta di primo livello. Per queste semplici richieste, l'oggetto include un campo results
e un campo result_index
:
- Il campo
results
fornisce un array di informazioni sui risultati della trascrizione. Per questo esempio, il campoalternatives
include i valori ditranscript
econfidence
del servizio nei risultati. Il campofinal
ha il valoretrue
per indicare che questi risultati non cambieranno. - Il campo
result_index
fornisce un identificativo univoco per i risultati. L'esempio mostra i risultati finali per una richiesta con un singolo file audio che non ha pause e la richiesta non include parametri aggiuntivi. Quindi il servizio restituisce un singolo camporesult_index
con un valore0
, che è sempre l'indice iniziale.
Se l'audio di input è più complesso o la richiesta include parametri aggiuntivi, i risultati possono contenere molte più informazioni.
Il campo alternatives
Il campo alternatives
fornisce un array di risultati della trascrizione. Per questa richiesta, l'array include solo un elemento.
- Il campo
transcript
fornisce i risultati della trascrizione. - Il campo
confidence
è un punteggio che indica la fiducia del servizio nella trascrizione, che per questo esempio supera il 90%.
I campi final
e result_index
qualificano il significato di questi campi.
Le modifiche interne e i miglioramenti al servizio possono influenzare le trascrizioni e i punteggi di fiducia. Ad esempio, il riconoscimento vocale può essere migliorato per restituire risultati di trascrizione più precisi. Allo stesso modo, i punteggi di trascrizione e parola di fiducia potrebbero cambiare leggermente a seguito di un miglioramento del riconoscimento vocale. Tali modifiche dovrebbero essere modee, ma non aspettarsi trascrizioni e punteggi di fiducia per rimanere invariati nel tempo.
Il campo final
Il campo final
indica se la trascrizione mostra i risultati finali della trascrizione:
- Il campo è
true
per i risultati finali, ai quali non verrà apportata alcuna modifica. Il servizio non invia ulteriori aggiornamenti per i risultati finali. - Il campo è
false
per i risultati provvisori, che sono soggetti a modifiche. Se utilizzi il parametrointerim_results
con l'interfaccia WebSocket, il servizio restituisce le ipotesi in evoluzione sotto forma di più campiresults
mentre trascrive l'audio. Per i risultati intermedi, il campofinal
è semprefalse
e il campoconfidence
è sempre omesso.
Per ulteriori informazioni sull'utilizzo dell'interfaccia WebSocket per ottenere risultati provvisori con modelli vocali di grandi dimensioni, modelli di generazione precedente e successiva, vedi i seguenti argomenti:
Il campo result_index
Il campo result_index
fornisce un identificativo per i risultati che è univoco per quella richiesta. Se richiedi i risultati provvisori, il servizio invia più campi results
per le ipotesi in evoluzione dell'audio
di input. Gli indici dei risultati provvisori per lo stesso audio hanno sempre lo stesso valore, così come i risultati finali per lo stesso audio.
Lo stesso indice può essere utilizzato anche per più risultati finali di una singola richiesta. Indipendentemente dal fatto che tu richieda risultati provvisori, il servizio può restituire più risultati finali con lo stesso indice se il tuo audio include pause o lunghi periodi di silenzio. Per ulteriori informazioni, vedi Pause e silenzio.
Una volta che hai ricevuto i risultati finali per qualsiasi audio, il servizio non invia ulteriori risultati con tale indice per il resto della richiesta. L'indice per eventuali ulteriori risultati viene incrementato di uno.
Se il tuo audio produce più risultati finali, concatena gli elementi transcript
dei risultati finali per assemblare la trascrizione completa dell'audio. Assemblare i risultati nell'ordine in cui li si riceve. Quando si assembla
una trascrizione finale completa, è possibile ignorare i risultati intermedi per i quali il campo final
è false
.
Ulteriori contenuti di risposta
Molti parametri di riconoscimento vocale influenzano il contenuto della risposta del servizio. Alcuni parametri possono causare il servizio per restituire più risultati di trascrizione:
end_of_phrase_silence_time
interim_results
split_transcript_at_phrase_end
Alcuni parametri possono modificare il contenuto di una trascrizione:
profanity_filter
redaction
smart_formatting
Altri parametri possono aggiungere ulteriori informazioni ai risultati:
audio_metrics
keywords
ekeywords_threshold
max_alternatives
processing_metrics
eprocessing_metrics_interval
speaker_labels
timestamps
word_alternatives_threshold
word_confidence
Per ulteriori informazioni sui parametri disponibili, consultare Utilizzo dei parametri di riconoscimento vocale e del riepilogo dei parametri.
Pause e silenzio
Come il servizio restituisce risultati dipende dall'interfaccia e dal modello che si usa per il riconoscimento vocale, così come l'audio che si passa al servizio. Per impostazione predefinita, il servizio trascrive un intero flusso audio come utteranza singola e restituisce un unico risultato finale per tutti gli audio. Tuttavia, il servizio può restituire più risultati finali in risposta alle seguenti condizioni:
- L'audio contiene una pausa o un silenzio esteso tra parole pronunciate o frasi. Per la maggior parte delle lingue, l'intervallo di pausa predefinito che il servizio utilizza per determinare i risultati finali separati è 0.8 secondi. Per il
cinese, l'intervallo predefinito è 0.6 secondi. È possibile utilizzare il parametro
end_of_phrase_silence_time
per modificare la durata dell'intervallo di pausa. Per ulteriori informazioni, vedi Periodo di silenzio al termine della frase. - Per i modelli di anteprima - generazione, l'utteranza raggiunge un massimo di due minuti. Il servizio suddivide una trascrizione in più risultati finali dopo due minuti di elaborazione continua.
I seguenti esempi mostrano le risposte con due risultati finali dalle interfacce HTTP e WebSocket. In entrambi i casi viene utilizzato lo stesso audio di input. L'audio pronuncia la frase "one two three four five six," con una pausa di un secondo tra le parole "three" e "four." Gli esempi utilizzano l'intervallo di pausa predefinito per il riconoscimento vocale.
-
Per le interfacce HTTP, il servizio invia sempre un singolo oggetto
SpeechRecognitionResults
. L'arrayalternatives
ha un elemento separato per ogni risultato finale. La risposta ha un singolo camporesult_index
con il valore0
.{ "result_index": 0, "results": [ { "alternatives": [ { "confidence": 0.99, "transcript": "one two three " } ], "final": true }, { "alternatives": [ { "confidence": 0.99, "transcript": "four five six " } ], "final": true } ] }
-
Per l'interfaccia WebSocket, il servizio invia gli stessi risultati dell'esempio precedente. La risposta include un singolo oggetto
SpeechRecognitionResults
, l'arrayalternatives
ha un elemento separato per ogni risultato finale e la risposta ha un singolo camporesult_index
con un valore0
.{ "result_index": 0, "results": [ { "alternatives": [ { "confidence": 0.99, "transcript": "one two three " } ], "final": true }, { "alternatives": [ { "confidence": 0.99, "transcript": "four five six " } ], "final": true } ] }
Con l'interfaccia WebSocket, le risposte per i risultati provvisori contengono più oggetti JSON. Per ulteriori informazioni sull'utilizzo dell'interfaccia WebSocket per ottenere risultati provvisori con modelli vocali di grandi dimensioni, modelli di generazione precedente e successiva, vedi i seguenti argomenti:
Un silenzio di 30 secondi nell'audio trasmesso in streaming può causare un timeout di inattività. Per ulteriori informazioni, vedi Timeout.
Le esitazioni del discorso e i marcatori di esitazione
Il discorso spesso include le esitazioni o le pause verbali, che sono anche indicate come disfunzioni. Le esitazioni si verificano quando l'utente inserisce i fillers come "uhm", "uh", "hmm" e le utteranze non lessicali correlate mentre si parla. Il servizio gestisce le esitazioni in modo diverso per i modelli vocali di grandi dimensioni, i modelli precedenti e di nuova generazione.
Esitazioni per i modelli di generazione precedente
Per i modelli di generazione precedente, il servizio include indicatori di esitazione nei risultati di trascrizione per la maggior parte delle lingue. Diverse lingue possono utilizzare diversi marcatori di esitazione o non indicare esitazioni a tutti:
- Per gli US English, i marcatori di esitazione sono indicati dal token
%HESITATION
. Le parole che generano indicatori di esitazione sonoaah
,ah
,hm
,hmm
,huh
,huh-uh
,hum
,ohh
,ugh
,uh
,uh-huh
,uh-oh
,uh-uh
,um
eum-hum
. - Per i giapponesi, i marcatori di esitazione iniziano tipicamente con
D_
. - Per lo spagnolo, il servizio non produce marcatori di esitazione.
Il seguente esempio mostra il token %HESITATION
per una trascrizione inglese statunitense:
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.99,
"transcript": ". . . that %HESITATION that's a . . ."
}
],
"final": true
}
]
}
Gli indicatori di esitazione possono comparire sia nei risultati provvisori che finali. L'abilitazione della formattazione intelligente impedisce ai marcatori di esitazione di apparire nei risultati finali per l'inglese americano. Per ulteriori informazioni, vedi Formattazione intelligente.
Gli indicatori di esitazione possono essere inclusi anche in altri campi di una trascrizione. Ad esempio, se richiedi le date/ore per le singole parole di una trascrizione, il servizio riporta l'ora di inizio e di fine di ciascun indicatore di esitazione.
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"timestamps": [
. . .
[
"that",
7.31,
7.69
],
[
"%HESITATION",
7.69,
7.98
],
[
"that's",
7.98,
8.41
],
[
"a",
8.41,
8.48
],
. . .
],
"confidence": 0.99,
"transcript": ". . . that %HESITATION that's a . . ."
}
],
"final": true
}
]
}
A meno che tu non debba utilizzarli per la tua applicazione, puoi tranquillamente filtrare gli indicatori di esitazione da una trascrizione.
Esitazioni per modelli di nuova generazione
Per i modelli di nuova generazione, il servizio include le parole di esitazione effettive in tutti i risultati della trascrizione. I modelli di prossima generazione trattano le esitazioni come parole, quindi le esitazioni possono apparire nei risultati intermedi, risultati finali e altri campi come i risultati per la parola timestamp. I modelli di prossima generazione non producono marcatori di esitazione, e l'abilitazione della formattazione intelligente non provoca esitazioni da eliminare dai risultati finali. Diverse lingue possono identificare diverse parole di esitazione:
- Per l'inglese americano, le parole di esitazione comuni, come per i modelli di generazione precedenti, sono
aah
,ah
,hm
,hmm
,huh
,huh-uh
,hum
,ohh
,ugh
,uh
,uh-huh
,uh-oh
,uh-uh
,um
eum-hum
. Non tutte queste parole di esitazione potrebbero apparire nelle trascrizioni. - Per il giapponese, le parole di esitazione di solito sono composte da caratteri a metà larghezza come
ア
,アノー
,ウーン
,エート
,マ
,テ
,マ
eンート
. Alcune esitazioni potrebbero essere riconosciute come caratteri a larghezza intera.
Per aumentare la probabilità di vedere delle esitazioni nella risposta, è possibile utilizzare un modello di linguaggio personalizzato. Nel modello personalizzato, aggiungere corpora che includono le esitazioni o creare parole personalizzate i cui suoni - ama catturare il modo in cui gli utenti dicono le disfunzioni. Per ulteriori informazioni sui modelli di linguaggio personalizzati, consultare Creazione di un modello di linguaggio personalizzato.
Il seguente esempio mostra l'esitazione "uhm" in una trascrizione inglese statunitense:
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.99,
"transcript": ". . . that uhm that's a . . ."
}
],
"final": true
}
]
}
Maiuscole
Per la maggior parte delle lingue, il servizio non utilizza maiuscole nelle trascrizioni di risposta. Se l'uso delle maiuscole è importante per la tua applicazione, devi scrivere con la prima lettera in maiuscolo la prima parola di ogni periodo e ogni altro termine per cui la maiuscola è appropriata.
Il servizio applica la capitalizzazione automatica solo alle seguenti lingue e modelli. Il servizio applica sempre questo maiuscolo / minuscolo, indipendentemente dal fatto che tu utilizzi la formattazione intelligente.
-
Per gli US English previous-generation models, il servizio capitalizza molti noci. Ad esempio, il servizio restituisce la seguente trascrizione per la frase baracco obama laureato a Columbia university:
Barack Obama graduated from Columbia University
Il servizio non capitalizza i rumori corretti per gli inglesi statunitensi con modelli di ultima generazione.
-
Per i modelli di ultima generazione tedesca, il servizio capitalizza molti noci. Ad esempio, il servizio restituisce la seguente trascrizione per la frase er braucht erst einen neuen eintrag ins vokabular punkt:
er braucht erst einen neuen Eintrag ins Vokabular Punkt
Il servizio non capitalizza noci per il tedesco con modelli di prima generazione.
Punteggiatura
Il servizio non inserisce la punteggiatura nelle trascrizioni di risposta per impostazione predefinita. Devi aggiungere la punteggiatura che ti serve nei risultati del servizio.
Per alcune lingue, puoi utilizzare la formattazione intelligente per indicare al servizio di sostituire i simboli di punteggiatura, come virgole, punti, punti interrogativi e punti esclamativi, per determinate stringhe di parole chiave. Per ulteriori informazioni, vedi Formattazione intelligente.