2016-08-17 2 views
2

J'ai utilisé [email protected] pour générer des sous-titres pour les vidéos en streaming (HLS) pour les clients sportifs.Watson Nodejs Discours au texte - modèle de langage de train

En outre, j'ai été capable de former des modèles de langage.

Je souhaiterais utiliser recognitionElement et mon customization_id pour mon modèle de langage. Cependant, j'ai 2 problèmes:

1) Je pense que recognizeElement a été désapprouvée

L'appel de la bibliothèque que je utilise est

videoProps.stream = WatsonSpeechToText.recognizeElement({ 
     element: myMediaElement, 
     token: videoProps.ctx.token, 
     muteSource: false, 
     autoPlay: false, 
     model:videoProps.ctx.currentModel, 
     timestamps: true, 
     profanity_filter: true, 
     inactivity_timeout: -1, 
     continuous: true 
    }) 
    .pipe(new WatsonSpeechToText.FormatStream()); 

Cependant, je remarque que watson-parole 0.19.3, la L'API a été supprimée. Y a-t-il une alternative maintenant?

En outre, je voudrais utiliser un modèle de langue personnalisé que j'ai formé. Cette API sera-t-elle mise à jour pour inclure l'appel suivant?

element: myMediaElement, 
      token: videoProps.ctx.token, 
      muteSource: false, 
      autoPlay: false, 
      customization_id:videoProps.ctx.currentModel.replace('custom:',''), 
      timestamps: true, 
      profanity_filter: true, 
      inactivity_timeout: -1, 
      continuous: true 

2) Je ne pense pas que l'API supporte les customization_id. En regardant dans le fichier recogn-stream.js, j'ai remarqué que OPENING_MESSAGE_PARAMS_ALLOWED et QUERY_PARAMS_ALLOWED supportent customization_id.

Je peux certain tirer vers le bas la source et faire les changements mais encore une fois, l'élément de reconnaissance est parti.

Merci, Aaron.

Répondre

1

Je vous envoyé un e-mail avec quelques autres détails, mais je vais aller de l'avant et copier les parties importantes ici au cas où quelqu'un d'autre a la même question:

Je removed recognizeElement() in v0.15 pour quelques raisons:

  • qualité de transcription réduite - l'audio passe par deux étapes de conversion supplémentaires qui a conduit à des transcriptions de qualité inférieure que d'autres méthodes de transcrivant une source

  • sortie Incohérence donnée - en raison de bro wser quirks, le flux audio brut diffère légèrement d'une lecture à l'autre, ce qui conduit à des transcriptions subtilement différentes dans certains cas. Cela a rendu le service STT apparemment incohérent. Bizarreries avec pause/avance rapide/rembobinage - la transcription est pour l'audio tel qu'il est entendu sortir des haut-parleurs, ce qui signifie que le rembobinage aura des mots répétés, une pause pourrait causer la division d'un mot en deux, etc. Des pauses prolongées ou des périodes de silence peuvent également provoquer un délai d'attente de transcription.

Ma solution recommandée est d'effectuer le côté serveur de transcription, en utilisant ffmpeg pour extraire et convertir l'audio, puis reformater les résultats en WebVVT format, et les attacher comme subtitles track sur la vidéo. C'est plus de travail, mais cela produit des résultats nettement meilleurs.

J'ai demandé à l'équipe de Discours d'ajouter WebVVT en tant que format de sortie pour simplifier cela, mais je ne sais pas si/quand cela se produira.

Mise à jour: Si vous voulez vraiment utiliser l'ancienne méthode recognizeElement() avec une version actuelle du SDK, je l'ont rapporté comme exemple: https://github.com/watson-developer-cloud/speech-javascript-sdk/tree/master/examples/static/audio-video-deprecated

Pour répondre à la deuxième question, un customization_id est maintenant accepté comme de v0.20. Notez que le service STT public ne prend pas en charge la personnalisation pour le moment.