Sous-titres en direct
Utilisez l'API Live Captions pour transcrire les flux audio et générer des sous-titres en temps réel pour votre application.
L'API Vonage Video Live Captions vous permet d'afficher des sous-titres en direct aux utilisateurs finaux dans une session Vonage Video, à l'aide d'un service de transcription. Nous utilisons AWS Transcribe comme fournisseur de transcription. Étant donné que Live Captions capture l'audio du routeur multimédia, il peut également fournir les sous-titres pour l'audio des participants à la connexion SIP.
Le sous-titrage en direct est activé par défaut pour tous les projets et il s'agit d'un produit basé sur l'utilisation. L'utilisation de Live Captions est facturée en fonction du nombre de flux audio de participants (ou d'identifiants de flux) envoyés au service de transcription. Pour plus d'informations, voir Règles de tarification de l'API Live Captions.
La fonction de sous-titrage en direct n'est prise en charge que dans les sessions acheminées (sessions qui utilisent la fonction Routeur média). Vous pouvez envoyer jusqu'à 50 flux audio d'une seule session Vonage à la fois au service de transcription pour les sous-titres.
Marche à suivre pour activer les sous-titres en direct
Utilisez la méthode du Client SDK pour publier l'audio vers le service de sous-titrage. Voir Mise en œuvre du sous-titrage en direct
Dans les clients qui s'abonnent, appeler la méthode SDK du client respectif pour qu'un abonné s'abonne aux sous-titres d'un flux.
Lors du lancement du sous-titrage en direct, l'audio est transmis en toute sécurité à un service de transcription audio tiers tel qu'Amazon Transcribe.
Utilisez l'API de sous-titrage dans les SDK clients pour activer ou désactiver la réception de sous-titres en direct dans votre application :
Le fait de commencer ou d'arrêter de recevoir des sous-titres en direct dans un client web n'a pas d'incidence sur les sous-titres reçus par d'autres clients connectés à la session.
Langues prises en charge
Le sous-titrage en direct prend en charge un certain nombre de langues. Indiquez la langue souhaitée dans le champ languageCode lors de l'activation des sous-titres en direct avec l'option API REST:
"af-ZA"- Afrikaans"ar-AE"- Arabe, Golfe"ar-SA"- Arabe, standard moderne"eu-ES"- Basque"ca-ES"- Catalan"zh-HK"- Chinois, simplifié"zh-CN"- Chinois, cantonais"zh-TW"- Chinois, traditionnel"hr-HR"- Croate"cs-CZ"- Tchèque"da-DK"- Danois"nl-NL"- Néerlandais"en-AU"- Anglais, australien"en-GB"- Anglais, britannique"en-IN"- Anglais, Indien"en-IE"- Anglais, irlandais"en-NZ"- Anglais, Nouvelle-Zélande"en-AB"- Anglais, écossais"en-ZA"- Anglais, sud-africain"en-US"- Anglais, US"en-WL"- Anglais, gallois"fa-IR"- Farsi"fi-FI"- Finlandais"fr-FR"- Français"fr-CA"- Français, Canadien"gl-ES"- Galicien"de-DE"- Allemand"de-CH"- Allemand, Suisse"el-GR"- Grecque"he-IL"- Hébreu"hi-IN"- Hindi, Indien"id-ID"- Indonésien"it-IT"- Italien"ja-JP"- Japonais"ko-KR"- Coréen"lv-LV"- Letton"ms-MY"- Malais"no-NO"- Norvégien Bokmål"pl-PL"- Polonais"pt-PT"- Portugais"pt-BR"- Portugais, brésilien"ro-RO"- Roumain"ru-RU"- Russie"sr-RS"- Serbe"sk-SK"- Slovaque"so-SO"- Somali"es-ES"- Espagnol"es-US"- Espagnol, États-Unis"sv-SE"- Suédois"tl-PH"- Tagalog/Filipino"th-TH"- Thaïlande"uk-UA"- Ukrainien"vi-VN"- Vietnamien"zu-ZA"- Zoulou
Cas d'utilisation
Les sous-titres en direct peuvent améliorer l'expérience et l'engagement des utilisateurs d'une application. Le sous-titrage améliore le score d'accessibilité de votre application, ce qui se traduit souvent par une participation des personnes souffrant d'un handicap auditif. Certaines lois dans le monde exigent que les applications fournissent des sous-titres.
Le sous-titrage peut améliorer la compréhension de l'orateur dans des environnements non contrôlés, améliorant ainsi l'engagement de l'utilisateur.
Les sous-titres en direct ne sont disponibles que pour les sessions acheminées (sessions qui utilisent la fonction Routeur média).
Lorsque la fonction de sous-titrage en direct est activée :
- Utilisez l'API de sous-titrage audio du client pour lancer le sous-titrage audio de chaque flux publié.
- Le flux audio est envoyé à un service de transcription audio tiers (AWS Transcribe).
- Utilisez l'API de sous-titrage audio du client pour vous abonner aux sous-titres en direct pour chaque flux publié.
- Le choix de ne pas recevoir les sous-titres par un abonné individuel n'affecte pas la réception des sous-titres par d'autres abonnés dans d'autres clients connectés à la session.
- Lorsque la session est terminée (lorsque tous les clients ont cessé de publier des flux dans la session), vous pouvez explicitement arrêter le sous-titrage à l'aide de l'API Stop Captions. Sinon, le sous-titrage audio s'arrête automatiquement après la durée maximale (spécifiée lors de l'appel de l'API Démarrer l'API sur les légendes) a expiré.
- Les sous-titres en direct d'une session se terminent lors de la rotation des serveurs. Vous pouvez redémarrer un sous-titrage en direct en réponse à des événements de notification de rotation du serveur. Voir Rotation des serveurs et migration des sessions.
- Le sous-titrage en direct s'arrête automatiquement après une durée maximale de 4 heures, mais vous pouvez configurer une durée maximale différente en appelant le service de sous-titrage en direct. Démarrer l'API sur les légendes. À l'expiration, le sous-titrage audio s'arrêtera sans effet sur la session en cours.
- Les sous-titres en direct seront interrompus 60 secondes après que le dernier client se soit déconnecté de la session.
Mise à jour de l'état des légendes en direct
Vous pouvez configurer un webhook pour recevoir des événements lorsque les sous-titres en direct démarrent, s'arrêtent et échouent pour une session.
- Accédez à votre Video API Account et sélectionnez le projet dans la liste des projets dans le menu de gauche.
- Sous Paramètres du projet, trouver Surveillance des sous-titres en direct et cliquez sur Configurer.
- Soumettre l'URL à laquelle les rappels doivent être envoyés.
Sécuriser les rappels : Fixer un Signature Secret pour utiliser des demandes de rappel de webhook sécurisées avec des rappels signés, en utilisant le secret de signature. Voir Rappels sécurisés.
Lorsque l'état des sous-titres en direct change, un message HTTP POST est envoyé aux URL de rappel. Si aucune URL de rappel n'est configurée, aucune mise à jour de l'état n'est envoyée. Les données brutes de la requête HTTP sont un message codé en JSON de la forme suivante :
{
"captionId": "<captionsId>",
"applicationId": "<applicationId>",
"sessionId": "<sessionId>",
"status": "stopped",
"createdAt": 1651253477,
"updatedAt": 1651253837,
"duration": 360,
"stream": {
"streamId": "<streamId>",
"streamStatus": "stopped"
},
"languageCode": "en-US",
"reason": "Maximum duration exceeds.",
"provider": "aws-transcribe",
"status": "stopped",
"group": "captions"
}
L'objet JSON comprend les propriétés suivantes :
captionsIdL'identifiant unique de la session de sous-titrage audio.applicationIdVotre identifiant unique d'application vidéo.sessionIdSession OpenTok pour laquelle le sous-titrage audio a démarré.statusÉtat actuel des sous-titres en direct."started"La plateforme Video API de Vonage a réussi à allouer les ressources nécessaires à l'envoi de flux audio pour le sous-titrage."transcribing"Le service de transcription a commencé (et le sous-titrage est en cours)."stopped"Le sous-titrage a cessé et toutes les ressources ont été supprimées."failed"Le sous-titrage n'a pas alloué les ressources nécessaires ou n'a pas envoyé de flux pour le sous-titrage.
createdAtL'horodatage Unix (Epoch) auquel le sous-titrage audio a commencé.updatedAtL'horodatage Unix (Epoch) auquel le sous-titrage audio a été mis à jour. Si l'horodatagestatusest"stopped"le paramètre updatedAt indique l'heure à laquelle le sous-titrage s'est arrêté.streamUn objet contenant l'ID du flux et le statut du flux sous-titré.languageCodeLe code linguistique BCP-47 utilisé.reasonInformations d'erreur supplémentaires sur le changement d'état.providerLe fournisseur de services tiers utilisé pour le sous-titrage audio :"aws-transcribe"Amazon Transcribe.
groupLe type d'événement, qui est toujours défini sur "captions" pour les événements API de sous-titres audio.
Mise en place de sous-titres en direct
Utiliser le sous-titres en direct API pour permettre le sous-titrage audio en temps réel des éditeurs et des abonnés connectés à une session.
Le sous-titrage en direct doit être activé au niveau de la session via l'option API REST.
Le sous-titrage en direct n'est possible que dans les cas suivants session acheminée.
Publishing live captions
To enable live captions, initialize the `OTPublisher` component with the optional boolean `publishCaptions` property of the `properties` prop set to true:<OTPublisher
style={{width: 400, height: 300}}
properties={{
publishCaptions: true,
// ... other properties
}}
/>
Ce réglage est false par défaut.
Vous pouvez modifier dynamiquement cette propriété (en fonction d'un changement d'état React) pour activer ou désactiver les légendes pour le flux publié.
Subscribing to live captions
To start receiving captions, set the `subscribeToCaptions` property of the `properties` prop of the `OTSubscriber` component:<OTSubscriber
style={{width: 200, height: 200}}
properties={{
subscribeToCaptions: true,
// ... other properties
}}
eventHandlers={{
captionReceived: event => {
console.log('Caption received:', event.text);
console.log('Caption final:', event.isFinal);
},
}}
/>
Vous pouvez régler la subscribeToCaptions à la propriété true que le client qui publie le flux soit ou non en train de publier des sous-titres en direct. L'abonné commencera à recevoir les données de sous-titrage dès que l'éditeur commencera à publier des sous-titres.
Les abonnés reçoivent les sous-titres par l'intermédiaire de l'application captionReceived (voir ci-dessus).
L'objet d'événement captionReceived comporte deux éléments properties:
- texte - Le texte de la légende (une chaîne)
- isFinal - Si le texte de la légende est final pour une phrase (
true) ou partiel (false). Le SDK React Native n'affiche pas le texte des événements de légende. Vous pouvez créer votre propre élément d'interface utilisateur pour rendre le texte des légendes en fonction des événements de légendes.
Recevoir ses propres sous-titres en direct
Le Vonage Client SDK ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les sous-titres d'un flux publié par le client local, créez un abonné caché (au flux de l'éditeur local) pour écouter les événements de sous-titres. Définissez la propriété subscribeToSelf de la propriété OTSubscriber à true. Vous ne devez pas rendre la vidéo de cet abonné (en réglant son width et height à 0) et vous ne devez pas vous abonner à l'audio (pour éviter l'écho, en mettant subscribeToAudio à faux).
Vous pouvez ajouter les légendes à l'interface utilisateur, comme vous le feriez pour les légendes d'autres flux. Voir Rendu personnalisé des abonnés.
Enabling live captions
Un éditeur peut être initialisé avec l'option booléenne publishCaptions paramètre. Le paramètre est transmis par l'intermédiaire de la fonction properties objet. Ce paramètre sera faux par défaut.
const publisher = OT.initPublisher({ publishCaptions: true });
Toggling live captions for a publisher dynamically
Une fois que les sous-titres en direct sont activés, un éditeur peut commencer ou arrêter d'envoyer des sous-titres en appelant la commande publishCaptions méthode. Cette méthode accepte un booléen comme paramètre.
Le code ci-dessous montre un exemple d'arrêt des sous-titres en direct pour un éditeur.
publisher.publishCaptions(false);
Le code ci-dessous montre un exemple de démarrage de sous-titres en direct pour un éditeur.
publisher.publishCaptions(true);
Subscribing to live captions
Un abonné peut choisir de commencer ou d'arrêter de recevoir des sous-titres en direct.
Subscriber subscribeToCaptions Method
Un abonné peut commencer ou arrêter de recevoir des sous-titres en appelant la fonction asynchrone subscribeToCaptions méthode. Cette méthode accepte un booléen comme paramètre.
Cette méthode peut être appelée même si l'éditeur est en train de publier des sous-titres en direct. L'abonné commencera à recevoir des données de sous-titrage dès que l'éditeur commencera à publier des sous-titres.
Le code ci-dessous montre un exemple de démarrage de sous-titres en direct pour un abonné.
try {
await subscriber.subscribeToCaptions(true);
} catch (err) {
console.warn(err);
}
Le code ci-dessous montre un exemple d'arrêt des sous-titres en direct pour un abonné.
try {
await subscriber.subscribeToCaptions(false);
} catch (err) {
console.warn(err);
}
Enabling live captions for a subscriber
Les abonnés peuvent vérifier s'ils sont activement abonnés aux sous-titres en direct d'un éditeur à l'aide de la fonction isSubscribedToCaptions (méthode). Cette méthode n'a pas de paramètres et renvoie un booléen
const isSubscribed = subscriber.isSubscribedToCaptions()
console.log(`${isSubscribed} states whether or not a given subscriber is subscribing to live captions`).
Receiving live captions
Les abonnés reçoivent les sous-titres par le biais d'événements. Le SDK n'affiche pas le texte des événements de sous-titrage.
Subscriber captionReceived Event
Un abonné qui est activement abonné aux sous-titres en direct enverra captionReceived événements. Les captionReceived possède trois propriétés : caption, streamIdet isFinal. streamId est l'identifiant du flux, tandis que caption est le texte transcrit. isFinal indique si la transcription d'une légende est terminée. Cette valeur n'est pertinente que lors de l'utilisation de sous-titres partiels. Le développeur peut choisir comment et où rendre le texte de la légende.
subscriber.on('captionReceived', function(event){
console.log(`Caption received for stream ${event.streamId}`);
console.log(`Caption text: ${event.caption}`);
console.log(`Final text: ${event.isFinal}`);
})
La figure suivante montre les journaux de la console lorsque l'on utilise des sous-titres partiels et qu'un éditeur dit "Ceci est ma phrase".
subscriber.on('captionReceived', function(event){
console.log(`The ${event.isFinal ? 'complete' : 'partial'} caption text is: "${event.caption}"`)
})
// The partial caption text is: "This"
// The partial caption text is: "This is"
// The partial caption text is: "This is my"
// The complete caption text is: "This is my sentence"
Receiving your own live captions
Le Vonage Client SDK ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les propres sous-titres de l'orateur, créez un abonné caché (au flux de l'éditeur local) pour écouter les événements de sous-titres. Cet abonné ne doit pas être attaché au DOM et ne doit pas s'abonner à l'audio, pour éviter l'écho. Vous pouvez ensuite ajouter les sous-titres à l'interface utilisateur.
La figure suivante montre la création d'un abonné caché pour que l'éditeur reçoive ses propres légendes.
const captionOnlySub = session.subscribe(
publisher.stream,
document.createElement('div'),
{
audioVolume: 0,
testNetwork: true, // This option is only needed in OpenTok.js versions below 2.25.1
},
);
captionOnlySub.on('captionReceived', (event) => {
// Do something with the event.caption
});
Remarque : Pour OpenTok.js 2.25.0 et les versions antérieures, vous devez paramétrer testNetwork à true dans les options transmises à Session.subscribe()en raison d'un bogue.
Sample
Les Échantillons web de Vonage Échantillon de légendes de base utilise des sous-titres en direct dans une application Web créée avec le Client Client SDK de Vonage.
Publishing live captions
Un éditeur peut démarrer ou arrêter la publication de sous-titres en temps réel en appelant la fonction
setPublishCaptions() de l'objet PublisherKit :
publisher.setPublishCaptions(true);
Si l'éditeur n'inclut pas de piste audio, la PublisherKit.PublisherListener.onError()
est appelée avec une erreur (avec la méthode code de l'erreur fixée à PublisherMissingAudioTrack).
Le SDK Android ne permet pas à un éditeur de recevoir des événements pour ses propres légendes. Pour rendre les propres légendes de l'orateur, créez un abonné caché (au flux de l'éditeur) pour écouter les événements de légende. (Voir la section suivante.)
Subscribing to live captions
Un abonné peut commencer ou arrêter de recevoir des sous-titres en appelant la fonction subscribeToCaptions() méthode
de l'objet SubscriberKit :
subscriber.setSubscribeToCaptions(true);
Vous pouvez appeler cette méthode, que l'éditeur du flux soit ou non en train de publier des des sous-titres en direct. L'abonné commencera à recevoir les données de sous-titrage dès que l'éditeur commencera à à publier des sous-titres.
Pour ne plus recevoir de sous-titres, passez false dans la méthode :
subscriber.setSubscribeToCaptions(false);
Les abonnés peuvent vérifier s'ils sont activement abonnés aux sous-titres en direct d'un flux à l'aide de la fonction
isSubscribedToCaptions() méthode :
boolean isSubscribed = subscriber.getSubscribeToCaptions();
Les abonnés reçoivent les sous-titres par le biais d'événements. Le SDK n'affiche pas le texte des légendes dans l'interface utilisateur.
dans l'interface utilisateur. Utilisez la fonction SubscriberKit.CaptionsListener pour mettre en place un récepteur pour les événements liés aux légendes :
SubscriberKit.CaptionsListener captionsListener = new SubscriberKit.CaptionsListener() {
@Override
public void onCaptionText(SubscriberKit subscriber, String text, boolean isFinal) {
// Display the text in the UI.
}
}
Les hasCaptions() d'un objet Stream indique si le flux comporte des sous-titres :
boolean hasCaptions = stream.hasCaptions();
Mettre en œuvre la onStreamHasCaptionsChanged() de la méthode Session.StreamPropertiesListener
pour vérifier si les sous-titres d'un flux sont activés ou désactivés :
Session.StreamPropertiesListener captioningListener = new Session.StreamPropertiesListener() {
@Override
public void onStreamHasCaptionsChanged(Session session, Stream stream, boolean hasCaptions) {
// Adjust UI to indicate that captions are or are not available.
}
}
Publishing live captions
Un éditeur peut démarrer ou arrêter la publication de sous-titres en temps réel en définissant le paramètre
publishCaptions de l'objet OTPublisherKit :
publisher.publishCaptions = true
Si l'éditeur n'inclut pas de piste audio, la [PublisherKit publisher:didFailWithError:]
est envoyé, avec le message code de l'erreur fixée à OTPublisherMissingAudioTrack.
Le SDK iOS de Vonage ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les propres sous-titres de l'orateur, créez un abonné caché (au flux de l'éditeur) pour écouter les événements de sous-titres. (Voir la section suivante.)
Subscribing to live captions
Un abonné peut commencer ou arrêter de recevoir des sous-titres en réglant le paramètre subscribeToCaptions de l'objet OTSubscriberKit
de l'objet OTSubscriberKit :
subscriber.subscribeToCaptions = true
Vous pouvez appeler cette méthode, que l'éditeur du flux soit ou non en train de publier des des sous-titres en direct. L'abonné commencera à recevoir les données de sous-titrage dès que l'éditeur commencera à à publier des sous-titres.
Pour ne plus recevoir de sous-titres, réglez la propriété sur false:
subscriber.setSubscribeToCaptions = false
Les OTSubscriberKitCaptionsDelegate(_:subscriber:caption:isFinal:) est envoyé lorsqu'un
d'un flux reçoit des sous-titres :
// OTSubscriberKitDelegate callbacks:
func subscriber(_ subscriber: OTSubscriberKit, caption text: NSString, isFinal final: Bool) {
// Display caption text in UI.
}
Vous pouvez mettre en place un observateur clé-valeur pour l'élément hasCaptions d'un objet OTStream
pour savoir si les sous-titres sont activés ou désactivés dans le flux.
//add observer on a stream of interest
let hasCaptionsObservation: NSKeyValueObservation = subscriber.stream.observe(\.hasCaptions, options: [.old, .new]) { object, change in
guard let oldValue = change.oldValue else { return }
guard let newValue = change.newValue else { return }
print("KVO change for \(subscriber.stream.streamId) hasCaptions: \(newValue)")
//manipulate GUI element
}
Publishing live captions
Un éditeur peut démarrer ou arrêter la publication de sous-titres en temps réel en définissant le paramètre
publishCaptions de l'objet OTPublisherKit :
publisher.publishCaptions = YES;
Si l'éditeur n'inclut pas de piste audio, la [PublisherKit publisher:didFailWithError:]
est envoyé, avec le message code de l'erreur fixée à OTPublisherMissingAudioTrack.
Le SDK iOS de Vonage ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les propres sous-titres de l'orateur, créez un abonné caché (au flux de l'éditeur) pour écouter les événements de sous-titres. (Voir la section suivante.)
Subscribing to live captions
Un abonné peut commencer ou arrêter de recevoir des sous-titres en réglant le paramètre subscribeToCaptions de l'objet OTSubscriberKit
de l'objet OTSubscriberKit :
subscriber.subscribeToCaptions = YES;
Vous pouvez appeler cette méthode, que l'éditeur du flux soit ou non en train de publier des des sous-titres en direct. L'abonné commencera à recevoir les données de sous-titrage dès que l'éditeur commencera à à publier des sous-titres.
Pour ne plus recevoir de sous-titres, réglez la propriété sur NO:
subscriber.setSubscribeToCaptions = NO;
Les [OTSubscriberKitCaptionsDelegate subscriber:caption:isFinal:] est envoyé lorsqu'un
d'un flux reçoit des sous-titres :
// OTSubscriber delegate callbacks:
-(void) subscriber:(OTSubscriberKit *)subscriber caption:(NSString *)text isFinal:(BOOL)final {
// Display caption text in UI.
}
Vous pouvez mettre en place un observateur clé-valeur pour l'élément hasCaptions d'un flux OTS
pour savoir si les sous-titres sont activés ou désactivés dans le flux :
//add observer on a stream of interest
[_subscriber.stream addObserver:self forKeyPath:@"hasCaptions" options:NSKeyValueObservingOptionNew context:NULL];
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
NSLog(@"KVO change for %@ = %@",keyPath, change);
//manipulate GUI element
}
Publishing live captions
Un éditeur peut démarrer ou arrêter la publication de sous-titres en temps réel en définissant le paramètre
PublishCaptions de l'objet Publisher :
publisher.PublishCaptions = true;
Si l'éditeur n'inclut pas de piste audio, la PublisherKit.Error est déclenché,
avec l'événement ErrorCode de l'objet ErrorEventArgs fixée à PublisherMissingAudioTrack.
Le SDK Windows de Vonage ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les propres sous-titres de l'orateur, créez un abonné caché (au flux de l'éditeur) pour écouter les événements de sous-titres. (Voir la section suivante.)
Subscribing to live captions
Un abonné peut commencer ou arrêter de recevoir des sous-titres en réglant le paramètre SubscribeToCaptions propriété
de l'objet Abonné :
subscriber.SubscribeToCaptions = true;
Vous pouvez définir cette propriété, que l'éditeur du flux soit ou non en train de publier des des sous-titres en direct. L'abonné commencera à recevoir des données de sous-titrage dès que l'éditeur commencera à à publier des sous-titres.
Pour ne plus recevoir de sous-titres, réglez la propriété sur false:
subscriber.SubscribeToCaptions = false;
Les abonnés reçoivent les sous-titres par le biais d'événements. Le SDK n'affiche pas le texte des légendes dans l'interface utilisateur.
dans l'interface utilisateur. Ajoutez un écouteur d'événements pour la fonction Subscriber.CaptionText événement :
subscriber.CaptionText += (object sender, Subscriber.CaptionTextArgs e) =>
{
// Display the text in the UI.
};
Les HasCaptions d'un objet Stream indique si le flux comporte des sous-titres :
stream.HasCaptions;
Les Session.StreamHasCaptionsChanged est déclenché lorsqu'un flux a des sous-titres activés et désactivés :
session.StreamHasCaptionsChanged += (object sender, StreamEventArgs e) =>
{
// Adjust UI to indicate that captions are or are not available.
};
Publishing live captions
Un éditeur peut démarrer ou arrêter la publication de sous-titres en temps réel en appelant la fonction
otc_publisher_set_publish_captions() fonction :
otc_publisher_set_publish_captions(publisher, OTC_FALSE);
Si l'éditeur n'inclut pas de piste audio, la otc_publisher_callbacks.on_error() callback
est appelée avec une erreur, le code d'erreur étant fixé à OTC_PUBLISHER_MISSING_AUDIO_TRACK.
Le SDK macOS de Vonage ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les propres sous-titres de l'orateur, créez un abonné caché (au flux de l'éditeur) pour écouter les événements de sous-titres. (Voir la section suivante.)
Subscribing to live captions
Un abonné peut commencer ou arrêter de recevoir des sous-titres en appelant la fonction
otc_subscriber_set_subscribe_to_captions() fonction :
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_TRUE);
Vous pouvez appeler cette fonction que l'éditeur du flux soit ou non en train de publier des des sous-titres en direct. L'abonné commencera à recevoir les données de sous-titrage dès que l'éditeur commencera à à publier des sous-titres.
Pour ne plus recevoir de sous-titres, passez OTC_FALSE dans la fonction :
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);
Les abonnés peuvent vérifier s'ils sont activement abonnés aux sous-titres en direct d'un flux à l'aide de la fonction
otc_subscriber_get_subscribe_to_captions() fonction :
otc_bool isSubscribed = otc_subscriber_get_subscribe_to_captions(subscriber);
Les abonnés reçoivent les sous-titres par le biais d'événements. Le SDK n'affiche pas le texte des légendes dans l'interface utilisateur.
dans l'interface utilisateur. Définir l'option on_caption_text() de la fonction membre du otc_subscriber_callbacks instance
pour mettre en place un récepteur pour les événements liés aux légendes :
static void on_caption_text(otc_subscriber *subscriber,
void *user_data,
const char* text) {
// Display the text in the UI.
}
subscriber_callbacks.on_caption_text = on_caption_text;
Les otc_stream_has_captions() permet de savoir si un flux est sous-titré :
otc_bool hasCaptions = otc_stream_has_captions(stream);
Mettre en œuvre la on_stream_has_captions_changed() de la fonction membre du otc_session_callbacks
pour contrôler l'activation et la désactivation des sous-titres d'un flux :
static void on_stream_has_captions_changed(otc_session* session,
void *user_data,
otc_stream *stream,
otc_bool has_captions) {
// Adjust UI to indicate that captions are or are not available.
}
session_callbacks.on_stream_has_captions_changed = on_stream_has_captions_changed;
Publishing live captions
Un éditeur peut démarrer ou arrêter la publication de sous-titres en temps réel en appelant la fonction
otc_publisher_set_publish_captions() fonction :
otc_publisher_set_publish_captions(publisher, OTC_FALSE);
Si l'éditeur n'inclut pas de piste audio, la otc_publisher_callbacks.on_error() callback
est appelée avec une erreur, le code d'erreur étant fixé à OTC_PUBLISHER_MISSING_AUDIO_TRACK.
Le SDK Vonage Linus ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les propres sous-titres de l'orateur, créez un abonné caché (au flux de l'éditeur) pour écouter les événements de sous-titres. (Voir la section suivante.)
Subscribing to live captions
Un abonné peut commencer ou arrêter de recevoir des sous-titres en appelant la fonction
otc_subscriber_set_subscribe_to_captions() fonction :
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_TRUE);
Vous pouvez appeler cette fonction que l'éditeur du flux soit ou non en train de publier des des sous-titres en direct. L'abonné commencera à recevoir les données de sous-titrage dès que l'éditeur commencera à à publier des sous-titres.
Pour ne plus recevoir de sous-titres, passez OTC_FALSE dans la fonction :
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);
Les abonnés peuvent vérifier s'ils sont activement abonnés aux sous-titres en direct d'un flux à l'aide de la fonction
otc_subscriber_get_subscribe_to_captions() fonction :
otc_bool isSubscribed = otc_subscriber_get_subscribe_to_captions(subscriber);
Les abonnés reçoivent les sous-titres par le biais d'événements. Le SDK n'affiche pas le texte des légendes dans l'interface utilisateur.
dans l'interface utilisateur. Définir l'option on_caption_text() de la fonction membre du otc_subscriber_callbacks instance
pour mettre en place un récepteur pour les événements liés aux légendes :
static void on_caption_text(otc_subscriber *subscriber,
void *user_data,
const char* text) {
// Display the text in the UI.
}
subscriber_callbacks.on_caption_text = on_caption_text;
Les otc_stream_has_captions() permet de savoir si un flux est sous-titré :
otc_bool hasCaptions = otc_stream_has_captions(stream);
Mettre en œuvre la on_stream_has_captions_changed() de la fonction membre du otc_session_callbacks
pour contrôler l'activation et la désactivation des sous-titres d'un flux :
static void on_stream_has_captions_changed(otc_session* session,
void *user_data,
otc_stream *stream,
otc_bool has_captions) {
// Adjust UI to indicate that captions are or are not available.
}
session_callbacks.on_stream_has_captions_changed = on_stream_has_captions_changed;
Problèmes connus
- Lorsqu'un participant reste muet pendant plus de 15 secondes, la connexion avec le fournisseur de transcription tiers est coupée, afin de réduire les coûts de facturation. Il peut s'écouler 2 à 5 secondes avant que la connexion ne soit rétablie et que les sous-titres ne reprennent.
Plus d'informations
Voir cet article sur le soutien de l'API de Vonage pour plus d'informations sur les spécifications techniques et les FAQ.
Voir cet article sur le soutien de l'API de Vonage pour obtenir des informations sur les tarifs de l'API Live Captions.