import{s as gt,o as Gt}from"../chunks/scheduler.f7e1785c.js";import{S as Bt,i as $t,g as i,s,r,A as Zt,h as o,f as l,c as a,j as Ct,u as p,x as m,k as lt,y as vt,a as n,v as u,d as M,t as y,w as d,m as xt,n as Wt}from"../chunks/index.9f8f0838.js";import{T as St}from"../chunks/Tip.4575d9cf.js";import{C as c}from"../chunks/CodeBlock.b3510e34.js";import{H as tt,E as qt}from"../chunks/EditOnGithub.5a9bb8c5.js";function Nt(pe){let J;return{c(){J=xt("Vous pouvez également instancier le `ASRDiarizationPipeline` directement à partir d'un modèle pré-entraîné en spécifiant l'identifiant d'un modèle ASR sur le *Hub* : `pipeline = ASRDiarizationPipeline.from_pretrained(\"openai/whisper-base\")`")},l(U){J=Wt(U,"Vous pouvez également instancier le `ASRDiarizationPipeline` directement à partir d'un modèle pré-entraîné en spécifiant l'identifiant d'un modèle ASR sur le *Hub* : `pipeline = ASRDiarizationPipeline.from_pretrained(\"openai/whisper-base\")`")},m(U,h){n(U,J,h)},d(U){U&&l(J)}}}function Qt(pe){let J,U,h,ue,f,Me,I,nt='Dans cette dernière section, nous utiliserons le modèle Whisper pour générer la transcription d’une conversation ou d’une réunion entre deux ou plusieurs locuteurs. Nous l’associerons ensuite à un modèle de <em>séparation des locuteurs</em> pour prédire “qui a parlé quand”. En faisant correspondre les horodatages des transcriptions Whisper avec les horodatages du modèle de séparation des locuteurs, nous pouvons prédire une transcription de réunion de bout en bout avec des heures de début et de fin entièrement formatées pour chaque locuteur. Il s’agit d’une version basique des services de transcription de réunions que vous avez pu voir en ligne sur <a href="https://otter.ai" rel="nofollow">Otter.ai</a> et co :',ye,T,st='<img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/diarization_transcription.png"/>',de,j,me,b,at=`La séparation des locuteur (tâche de <em>diarization</em> en anglais) consiste à prendre une entrée audio non étiquetée et à prédire “qui a parlé quand”.
Ce faisant, nous pouvons prédire les horodatages de début / fin pour chaque tour de parole, correspondant au moment où chaque locuteur commence à parler et au moment où il termine.`,ce,C,it='🤗 <em>Transformers</em> n’a actuellement pas de modèle de <em>diarization</em> inclus, mais il y a des <em>checkpoints</em> sur le <em>Hub</em> qui peuvent être utilisés avec une relative facilité. Dans cet exemple, nous utiliserons le modèle pré-entraîné de <a href="https://github.com/pyannote/pyannote-audio" rel="nofollow">pyannote.audio</a>. Commençons par l’installation du paquet avec pip :',Je,g,Ue,G,ot='Bien, les poids de ce modèle sont hébergés sur le <em>Hub</em>. Pour y accéder, nous devons d’abord accepter les conditions d’utilisation du modèle de <em>diarization</em> : <a href="https://huggingface.co/pyannote/speaker-diarization" rel="nofollow">pyannote/speaker-diarization</a>. Et ensuite les conditions d’utilisation du modèle de segmentation : <a href="https://huggingface.co/pyannote/segmentation" rel="nofollow">pyannote/segmentation</a>.',Te,B,rt="Une fois terminé, nous pouvons charger le pipeline de séparation des locuteurs localement sur notre appareil :",we,$,he,Z,pt='Essayons-le sur un échantillon de fichier audio ! Pour cela, nous allons charger un échantillon du jeu de données <a href="https://huggingface.co/datasets/librispeech_asr" rel="nofollow">LibriSpeech ASR</a> qui consiste en deux locuteurs différents qui ont été concaténés ensemble pour donner un seul fichier audio :',fe,v,Ie,x,ut="Nous pouvons écouter l’audio pour voir à quoi cela ressemble :",je,W,be,S,Mt="Nous pouvons clairement entendre deux locuteurs différents, avec une transition d’environ 15 secondes. Passons ce fichier audio au modèle de séparation pour obtenir les heures de début et de fin du locuteur. Notez que pyannote.audio s’attend à ce que l’entrée audio soit un tenseur PyTorch de la forme <code>(channels, seq_len)</code>, nous devons donc effectuer cette conversion avant d’exécuter le modèle :",Ce,q,ge,N,Ge,Q,yt="Cela semble plutôt bien ! Nous pouvons voir que le premier locuteur est prédit comme parlant jusqu’à la marque de 14,5 secondes, et le second locuteur à partir de 15,4s. Il ne nous reste plus qu’à obtenir notre transcription !",Be,k,$e,A,dt='Pour la troisième fois dans cette unité, nous allons utiliser le modèle Whisper pour notre système de transcription de la parole. Plus précisément, nous chargerons le <em>checkpoint</em> <a href="https://huggingface.co/openai/whisper-base" rel="nofollow">Whisper Base</a>, car il est suffisamment petit pour donner une bonne vitesse d’inférence avec une précision de transcription raisonnable. Comme auparavant, vous pouvez utiliser n’importe quel <em>checkpoint </em>de reconnaissance vocale disponible sur le <a href="https://huggingface.co/models?pipeline_tag=automatic-speech-recognition&amp;library=transformers&amp;sort=trending" rel="nofollow"><em>Hub</em></a>, y compris Wav2Vec2, MMS ASR ou d’autres tailles de Whisper :',Ze,H,ve,R,mt="Obtenons la transcription de notre échantillon audio, en retournant également les horodatages au niveau du segment afin que nous connaissions les heures de début et de fin de chaque segment. Vous vous souviendrez de l’unité 5 que nous devons passer l’argument <code>return_timestamps=True</code> pour activer la tâche de prédiction de l’horodatage de Whisper :",xe,X,We,E,Se,V,ct="Ok, nous constatons que chaque segment de la transcription a une heure de début et une heure de fin, avec un changement de locuteur au bout de 15,48 secondes. Nous pouvons maintenant associer cette transcription aux horodatages des locuteurs que nous avons obtenus à partir de notre modèle de <em>diarization</em> pour obtenir notre transcription finale.",qe,_,Ne,F,Jt=`Pour obtenir la transcription finale, nous allons aligner les timestamps du modèle de diarisation avec ceux du modèle Whisper.
Le modèle de séparation prédit que le premier locuteur se termine à 14,5 secondes et que le second locuteur commence à 15,4 secondes, alors que Whisper prédit les limites des segments à 13,88, 15,48 et 19,44 secondes respectivement. Comme les timestamps de Whisper ne correspondent pas parfaitement à ceux du modèle de séparation, nous devons trouver lesquelles de ces limites sont les plus proches de 14,5 et 15,4 secondes, et segmenter la transcription par locuteur en conséquence. Plus précisément, nous trouverons l’alignement le plus proche entre les horodatages de la séparation et de la transcription en minimisant la distance absolue entre les deux.`,Qe,z,Ut="Heureusement pour nous, nous pouvons utiliser 🤗 <em>Speechbox</em> pour effectuer cet alignement. Tout d’abord, installons <code>speechbox</code> depuis <em>main</em> :",ke,Y,Ae,D,Tt='Nous pouvons maintenant instancier notre pipeline combiné de <em>diarization</em> et de transcription, en passant nos deux modèles à la classe <a href="https://github.com/huggingface/speechbox/tree/main#asr-with-speaker-diarization" rel="nofollow"><code>ASRDiarizationPipeline</code></a> :',He,L,Re,w,Xe,P,wt="Passons le fichier audio au pipeline et voyons ce que nous obtenons :",Ee,K,Ve,O,_e,ee,ht="Excellent ! Le premier locuteur est segmenté comme parlant de 0 à 15,48 secondes, et le second locuteur de 15,48 à 21,28 secondes, avec les transcriptions correspondantes pour chacun.",Fe,te,ft="Nous pouvons formater les horodatages de manière un peu plus agréable en définissant deux fonctions d’aide. La première convertit un <em>tuple</em> d’horodatages en une chaîne de caractères, arrondie à un nombre défini de décimales. La seconde combine l’identifiant du locuteur, l’horodatage et les informations textuelles sur une seule ligne, et sépare chaque locuteur sur sa propre ligne pour faciliter la lecture :",ze,le,Ye,ne,It="Exécutons à nouveau le pipeline, en formatant cette fois la transcription selon la fonction que nous venons de définir :",De,se,Le,ae,Pe,ie,jt=`Et voilà ! Nous avons ainsi séparé et transcrit notre audio et renvoyé des transcriptions segmentées par locuteur.
Bien que l’algorithme de distance minimale pour aligner les horodatages diarisés et les horodatages transcrits soit simple, il fonctionne bien dans la pratique. Si vous souhaitez explorer des méthodes plus avancées pour combiner les horodatages, le code source de <code>ASRDiarizationPipeline</code> est un bon point de départ : <a href="https://github.com/huggingface/speechbox/blob/96d2d1a180252d92263f862a1cd25a48860f1aed/src/speechbox/diarize.py#L12" rel="nofollow">speechbox/diarize.py</a>.`,Ke,oe,Oe,re,et;return f=new tt({props:{title:"Transcrire une réunion",local:"transcrire-une-réunion",headingTag:"h1"}}),j=new tt({props:{title:"Séparation des locuteurs",local:"séparation-des-locuteurs",headingTag:"h2"}}),g=new c({props:{code:"cGlwJTIwaW5zdGFsbCUyMC0tdXBncmFkZSUyMHB5YW5ub3RlLmF1ZGlv",highlighted:"pip install --upgrade pyannote.audio",wrap:!1}}),$=new c({props:{code:"ZnJvbSUyMHB5YW5ub3RlLmF1ZGlvJTIwaW1wb3J0JTIwUGlwZWxpbmUlMEElMEFkaWFyaXphdGlvbl9waXBlbGluZSUyMCUzRCUyMFBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJweWFubm90ZSUyRnNwZWFrZXItZGlhcml6YXRpb24lNDAyLjElMjIlMkMlMjB1c2VfYXV0aF90b2tlbiUzRFRydWUlMEEp",highlighted:`<span class="hljs-keyword">from</span> pyannote.audio <span class="hljs-keyword">import</span> Pipeline

diarization_pipeline = Pipeline.from_pretrained(
    <span class="hljs-string">&quot;pyannote/speaker-diarization@2.1&quot;</span>, use_auth_token=<span class="hljs-literal">True</span>
)`,wrap:!1}}),v=new c({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBY29uY2F0ZW5hdGVkX2xpYnJpc3BlZWNoJTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUwQSUyMCUyMCUyMCUyMCUyMnNhbmNoaXQtZ2FuZGhpJTJGY29uY2F0ZW5hdGVkX2xpYnJpc3BlZWNoJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiUyQyUyMHN0cmVhbWluZyUzRFRydWUlMEEpJTBBc2FtcGxlJTIwJTNEJTIwbmV4dChpdGVyKGNvbmNhdGVuYXRlZF9saWJyaXNwZWVjaCkp",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

concatenated_librispeech = load_dataset(
    <span class="hljs-string">&quot;sanchit-gandhi/concatenated_librispeech&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>, streaming=<span class="hljs-literal">True</span>
)
sample = <span class="hljs-built_in">next</span>(<span class="hljs-built_in">iter</span>(concatenated_librispeech))`,wrap:!1}}),W=new c({props:{code:"ZnJvbSUyMElQeXRob24uZGlzcGxheSUyMGltcG9ydCUyMEF1ZGlvJTBBJTBBQXVkaW8oc2FtcGxlJTVCJTIyYXVkaW8lMjIlNUQlNUIlMjJhcnJheSUyMiU1RCUyQyUyMHJhdGUlM0RzYW1wbGUlNUIlMjJhdWRpbyUyMiU1RCU1QiUyMnNhbXBsaW5nX3JhdGUlMjIlNUQp",highlighted:`<span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Audio

Audio(sample[<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;array&quot;</span>], rate=sample[<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;sampling_rate&quot;</span>])`,wrap:!1}}),q=new c({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFpbnB1dF90ZW5zb3IlMjAlM0QlMjB0b3JjaC5mcm9tX251bXB5KHNhbXBsZSU1QiUyMmF1ZGlvJTIyJTVEJTVCJTIyYXJyYXklMjIlNUQlNUJOb25lJTJDJTIwJTNBJTVEKS5mbG9hdCgpJTBBb3V0cHV0cyUyMCUzRCUyMGRpYXJpemF0aW9uX3BpcGVsaW5lKCUwQSUyMCUyMCUyMCUyMCU3QiUyMndhdmVmb3JtJTIyJTNBJTIwaW5wdXRfdGVuc29yJTJDJTIwJTIyc2FtcGxlX3JhdGUlMjIlM0ElMjBzYW1wbGUlNUIlMjJhdWRpbyUyMiU1RCU1QiUyMnNhbXBsaW5nX3JhdGUlMjIlNUQlN0QlMEEpJTBBJTBBb3V0cHV0cy5mb3JfanNvbigpJTVCJTIyY29udGVudCUyMiU1RA==",highlighted:`<span class="hljs-keyword">import</span> torch

input_tensor = torch.from_numpy(sample[<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;array&quot;</span>][<span class="hljs-literal">None</span>, :]).<span class="hljs-built_in">float</span>()
outputs = diarization_pipeline(
    {<span class="hljs-string">&quot;waveform&quot;</span>: input_tensor, <span class="hljs-string">&quot;sample_rate&quot;</span>: sample[<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;sampling_rate&quot;</span>]}
)

outputs.for_json()[<span class="hljs-string">&quot;content&quot;</span>]`,wrap:!1}}),N=new c({props:{code:"JTVCJTdCJ3NlZ21lbnQnJTNBJTIwJTdCJ3N0YXJ0JyUzQSUyMDAuNDk3ODEyNSUyQyUyMCdlbmQnJTNBJTIwMTQuNTIwOTM3NTAwMDAwMDAyJTdEJTJDJTBBJTIwJTIwJ3RyYWNrJyUzQSUyMCdCJyUyQyUwQSUyMCUyMCdsYWJlbCclM0ElMjAnU1BFQUtFUl8wMSclN0QlMkMlMEElMjAlN0Inc2VnbWVudCclM0ElMjAlN0Inc3RhcnQnJTNBJTIwMTUuMzY0Njg3NTAwMDAwMDAyJTJDJTIwJ2VuZCclM0ElMjAyMS4zNzIxODc1JTdEJTJDJTBBJTIwJTIwJ3RyYWNrJyUzQSUyMCdBJyUyQyUwQSUyMCUyMCdsYWJlbCclM0ElMjAnU1BFQUtFUl8wMCclN0QlNUQ=",highlighted:`[{&#x27;segment&#x27;: {&#x27;start&#x27;: 0.4978125, &#x27;end&#x27;: 14.520937500000002},
  &#x27;track&#x27;: &#x27;B&#x27;,
  &#x27;label&#x27;: &#x27;SPEAKER_01&#x27;},
 {&#x27;segment&#x27;: {&#x27;start&#x27;: 15.364687500000002, &#x27;end&#x27;: 21.3721875},
  &#x27;track&#x27;: &#x27;A&#x27;,
  &#x27;label&#x27;: &#x27;SPEAKER_00&#x27;}]`,wrap:!1}}),k=new tt({props:{title:"Transcription de la parole",local:"transcription-de-la-parole",headingTag:"h2"}}),H=new c({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBYXNyX3BpcGVsaW5lJTIwJTNEJTIwcGlwZWxpbmUoJTBBJTIwJTIwJTIwJTIwJTIyYXV0b21hdGljLXNwZWVjaC1yZWNvZ25pdGlvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMG1vZGVsJTNEJTIyb3BlbmFpJTJGd2hpc3Blci1iYXNlJTIyJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

asr_pipeline = pipeline(
    <span class="hljs-string">&quot;automatic-speech-recognition&quot;</span>,
    model=<span class="hljs-string">&quot;openai/whisper-base&quot;</span>,
)`,wrap:!1}}),X=new c({props:{code:"YXNyX3BpcGVsaW5lKCUwQSUyMCUyMCUyMCUyMHNhbXBsZSU1QiUyMmF1ZGlvJTIyJTVELmNvcHkoKSUyQyUwQSUyMCUyMCUyMCUyMGdlbmVyYXRlX2t3YXJncyUzRCU3QiUyMm1heF9uZXdfdG9rZW5zJTIyJTNBJTIwMjU2JTdEJTJDJTBBJTIwJTIwJTIwJTIwcmV0dXJuX3RpbWVzdGFtcHMlM0RUcnVlJTJDJTBBKQ==",highlighted:`asr_pipeline(
    sample[<span class="hljs-string">&quot;audio&quot;</span>].copy(),
    generate_kwargs={<span class="hljs-string">&quot;max_new_tokens&quot;</span>: <span class="hljs-number">256</span>},
    return_timestamps=<span class="hljs-literal">True</span>,
)`,wrap:!1}}),E=new c({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJTIydGV4dCUyMiUzQSUyMCUyMiUyMFRoZSUyMHNlY29uZCUyMGFuZCUyMGltcG9ydGFuY2UlMjBpcyUyMGFzJTIwZm9sbG93cy4lMjBTb3ZlcmVpZ250eSUyMG1heSUyMGJlJTIwZGVmaW5lZCUyMHRvJTIwYmUlMjB0aGUlMjByaWdodCUyMG9mJTIwbWFraW5nJTIwbGF3cy4lMjBJbiUyMEZyYW5jZSUyQyUyMHRoZSUyMGtpbmclMjByZWFsbHklMjBleGVyY2lzZXMlMjBhJTIwcG9ydGlvbiUyMG9mJTIwdGhlJTIwc292ZXJlaWduJTIwcG93ZXIlMkMlMjBzaW5jZSUyMHRoZSUyMGxhd3MlMjBoYXZlJTIwbm8lMjB3ZWlnaHQuJTIwSGUlMjB3YXMlMjBpbiUyMGElMjBmYXZvcmVkJTIwc3RhdGUlMjBvZiUyMG1pbmQlMkMlMjBvd2luZyUyMHRvJTIwdGhlJTIwYmxpZ2h0JTIwaGlzJTIwd2lmZSdzJTIwYWN0aW9uJTIwdGhyZWF0ZW5lZCUyMHRvJTIwY2FzdCUyMHVwb24lMjBoaXMlMjBlbnRpcmUlMjBmdXR1cmUuJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyY2h1bmtzJTIyJTNBJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTIydGltZXN0YW1wJTIyJTNBJTIwKDAuMCUyQyUyMDMuNTYpJTJDJTIwJTIydGV4dCUyMiUzQSUyMCUyMiUyMFRoZSUyMHNlY29uZCUyMGFuZCUyMGltcG9ydGFuY2UlMjBpcyUyMGFzJTIwZm9sbG93cy4lMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ0aW1lc3RhbXAlMjIlM0ElMjAoMy41NiUyQyUyMDcuODQpJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydGV4dCUyMiUzQSUyMCUyMiUyMFNvdmVyZWlnbnR5JTIwbWF5JTIwYmUlMjBkZWZpbmVkJTIwdG8lMjBiZSUyMHRoZSUyMHJpZ2h0JTIwb2YlMjBtYWtpbmclMjBsYXdzLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnRpbWVzdGFtcCUyMiUzQSUyMCg3Ljg0JTJDJTIwMTMuODgpJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydGV4dCUyMiUzQSUyMCUyMiUyMEluJTIwRnJhbmNlJTJDJTIwdGhlJTIwa2luZyUyMHJlYWxseSUyMGV4ZXJjaXNlcyUyMGElMjBwb3J0aW9uJTIwb2YlMjB0aGUlMjBzb3ZlcmVpZ24lMjBwb3dlciUyQyUyMHNpbmNlJTIwdGhlJTIwbGF3cyUyMGhhdmUlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJ0aW1lc3RhbXAlMjIlM0ElMjAoMTMuODglMkMlMjAxNS40OCklMkMlMjAlMjJ0ZXh0JTIyJTNBJTIwJTIyJTIwbm8lMjB3ZWlnaHQuJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydGltZXN0YW1wJTIyJTNBJTIwKDE1LjQ4JTJDJTIwMTkuNDQpJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydGV4dCUyMiUzQSUyMCUyMiUyMEhlJTIwd2FzJTIwaW4lMjBhJTIwZmF2b3JlZCUyMHN0YXRlJTIwb2YlMjBtaW5kJTJDJTIwb3dpbmclMjB0byUyMHRoZSUyMGJsaWdodCUyMGhpcyUyMHdpZmUncyUyMGFjdGlvbiUyMHRocmVhdGVuZWQlMjB0byUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMnRpbWVzdGFtcCUyMiUzQSUyMCgxOS40NCUyQyUyMDIxLjI4KSUyQyUyMCUyMnRleHQlMjIlM0ElMjAlMjIlMjBjYXN0JTIwdXBvbiUyMGhpcyUyMGVudGlyZSUyMGZ1dHVyZS4lMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlNUQlMkMlMEElN0Q=",highlighted:`{
    &quot;text&quot;: &quot; The second and importance is as follows. Sovereignty may be defined to be the right of making laws. In France, the king really exercises a portion of the sovereign power, since the laws have no weight. He was in a favored state of mind, owing to the blight his wife&#x27;s action threatened to cast upon his entire future.&quot;,
    &quot;chunks&quot;: [
        {&quot;timestamp&quot;: (0.0, 3.56), &quot;text&quot;: &quot; The second and importance is as follows.&quot;},
        {
            &quot;timestamp&quot;: (3.56, 7.84),
            &quot;text&quot;: &quot; Sovereignty may be defined to be the right of making laws.&quot;,
        },
        {
            &quot;timestamp&quot;: (7.84, 13.88),
            &quot;text&quot;: &quot; In France, the king really exercises a portion of the sovereign power, since the laws have&quot;,
        },
        {&quot;timestamp&quot;: (13.88, 15.48), &quot;text&quot;: &quot; no weight.&quot;},
        {
            &quot;timestamp&quot;: (15.48, 19.44),
            &quot;text&quot;: &quot; He was in a favored state of mind, owing to the blight his wife&#x27;s action threatened to&quot;,
        },
        {&quot;timestamp&quot;: (19.44, 21.28), &quot;text&quot;: &quot; cast upon his entire future.&quot;},
    ],
}`,wrap:!1}}),_=new tt({props:{title:"Speechbox",local:"speechbox",headingTag:"h2"}}),Y=new c({props:{code:"cGlwJTIwaW5zdGFsbCUyMGdpdCUyQmh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRmh1Z2dpbmdmYWNlJTJGc3BlZWNoYm94",highlighted:"pip install git+https://github.com/huggingface/speechbox",wrap:!1}}),L=new c({props:{code:"ZnJvbSUyMHNwZWVjaGJveCUyMGltcG9ydCUyMEFTUkRpYXJpemF0aW9uUGlwZWxpbmUlMEElMEFwaXBlbGluZSUyMCUzRCUyMEFTUkRpYXJpemF0aW9uUGlwZWxpbmUoJTBBJTIwJTIwJTIwJTIwYXNyX3BpcGVsaW5lJTNEYXNyX3BpcGVsaW5lJTJDJTIwZGlhcml6YXRpb25fcGlwZWxpbmUlM0RkaWFyaXphdGlvbl9waXBlbGluZSUwQSk=",highlighted:`<span class="hljs-keyword">from</span> speechbox <span class="hljs-keyword">import</span> ASRDiarizationPipeline

pipeline = ASRDiarizationPipeline(
    asr_pipeline=asr_pipeline, diarization_pipeline=diarization_pipeline
)`,wrap:!1}}),w=new St({props:{$$slots:{default:[Nt]},$$scope:{ctx:pe}}}),K=new c({props:{code:"cGlwZWxpbmUoc2FtcGxlJTVCJTIyYXVkaW8lMjIlNUQuY29weSgpKQ==",highlighted:'pipeline(sample[<span class="hljs-string">&quot;audio&quot;</span>].copy())',wrap:!1}}),O=new c({props:{code:"JTVCJTdCJ3NwZWFrZXInJTNBJTIwJ1NQRUFLRVJfMDEnJTJDJTBBJTIwJTIwJ3RleHQnJTNBJTIwJyUyMFRoZSUyMHNlY29uZCUyMGFuZCUyMGltcG9ydGFuY2UlMjBpcyUyMGFzJTIwZm9sbG93cy4lMjBTb3ZlcmVpZ250eSUyMG1heSUyMGJlJTIwZGVmaW5lZCUyMHRvJTIwYmUlMjB0aGUlMjByaWdodCUyMG9mJTIwbWFraW5nJTIwbGF3cy4lMjBJbiUyMEZyYW5jZSUyQyUyMHRoZSUyMGtpbmclMjByZWFsbHklMjBleGVyY2lzZXMlMjBhJTIwcG9ydGlvbiUyMG9mJTIwdGhlJTIwc292ZXJlaWduJTIwcG93ZXIlMkMlMjBzaW5jZSUyMHRoZSUyMGxhd3MlMjBoYXZlJTIwbm8lMjB3ZWlnaHQuJyUyQyUwQSUyMCUyMCd0aW1lc3RhbXAnJTNBJTIwKDAuMCUyQyUyMDE1LjQ4KSU3RCUyQyUwQSUyMCU3QidzcGVha2VyJyUzQSUyMCdTUEVBS0VSXzAwJyUyQyUwQSUyMCUyMCd0ZXh0JyUzQSUyMCUyMiUyMEhlJTIwd2FzJTIwaW4lMjBhJTIwZmF2b3JlZCUyMHN0YXRlJTIwb2YlMjBtaW5kJTJDJTIwb3dpbmclMjB0byUyMHRoZSUyMGJsaWdodCUyMGhpcyUyMHdpZmUncyUyMGFjdGlvbiUyMHRocmVhdGVuZWQlMjB0byUyMGNhc3QlMjB1cG9uJTIwaGlzJTIwZW50aXJlJTIwZnV0dXJlLiUyMiUyQyUwQSUyMCUyMCd0aW1lc3RhbXAnJTNBJTIwKDE1LjQ4JTJDJTIwMjEuMjgpJTdEJTVE",highlighted:`[{&#x27;speaker&#x27;: &#x27;SPEAKER_01&#x27;,
  &#x27;text&#x27;: &#x27; The second and importance is as follows. Sovereignty may be defined to be the right of making laws. In France, the king really exercises a portion of the sovereign power, since the laws have no weight.&#x27;,
  &#x27;timestamp&#x27;: (0.0, 15.48)},
 {&#x27;speaker&#x27;: &#x27;SPEAKER_00&#x27;,
  &#x27;text&#x27;: &quot; He was in a favored state of mind, owing to the blight his wife&#x27;s action threatened to cast upon his entire future.&quot;,
  &#x27;timestamp&#x27;: (15.48, 21.28)}]`,wrap:!1}}),le=new c({props:{code:"ZGVmJTIwdHVwbGVfdG9fc3RyaW5nKHN0YXJ0X2VuZF90dXBsZSUyQyUyMG5kaWdpdHMlM0QxKSUzQSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMHN0cigocm91bmQoc3RhcnRfZW5kX3R1cGxlJTVCMCU1RCUyQyUyMG5kaWdpdHMpJTJDJTIwcm91bmQoc3RhcnRfZW5kX3R1cGxlJTVCMSU1RCUyQyUyMG5kaWdpdHMpKSklMEElMEElMEFkZWYlMjBmb3JtYXRfYXNfdHJhbnNjcmlwdGlvbihyYXdfc2VnbWVudHMpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTIyJTVDbiU1Q24lMjIuam9pbiglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBjaHVuayU1QiUyMnNwZWFrZXIlMjIlNUQlMjAlMkIlMjAlMjIlMjAlMjIlMjAlMkIlMjB0dXBsZV90b19zdHJpbmcoY2h1bmslNUIlMjJ0aW1lc3RhbXAlMjIlNUQpJTIwJTJCJTIwY2h1bmslNUIlMjJ0ZXh0JTIyJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZm9yJTIwY2h1bmslMjBpbiUyMHJhd19zZWdtZW50cyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUwQSUyMCUyMCUyMCUyMCk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tuple_to_string</span>(<span class="hljs-params">start_end_tuple, ndigits=<span class="hljs-number">1</span></span>):
    <span class="hljs-keyword">return</span> <span class="hljs-built_in">str</span>((<span class="hljs-built_in">round</span>(start_end_tuple[<span class="hljs-number">0</span>], ndigits), <span class="hljs-built_in">round</span>(start_end_tuple[<span class="hljs-number">1</span>], ndigits)))


<span class="hljs-keyword">def</span> <span class="hljs-title function_">format_as_transcription</span>(<span class="hljs-params">raw_segments</span>):
    <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;\\n\\n&quot;</span>.join(
        [
            chunk[<span class="hljs-string">&quot;speaker&quot;</span>] + <span class="hljs-string">&quot; &quot;</span> + tuple_to_string(chunk[<span class="hljs-string">&quot;timestamp&quot;</span>]) + chunk[<span class="hljs-string">&quot;text&quot;</span>]
            <span class="hljs-keyword">for</span> chunk <span class="hljs-keyword">in</span> raw_segments
        ]
    )`,wrap:!1}}),se=new c({props:{code:"b3V0cHV0cyUyMCUzRCUyMHBpcGVsaW5lKHNhbXBsZSU1QiUyMmF1ZGlvJTIyJTVELmNvcHkoKSklMEElMEFmb3JtYXRfYXNfdHJhbnNjcmlwdGlvbihvdXRwdXRzKQ==",highlighted:`outputs = pipeline(sample[<span class="hljs-string">&quot;audio&quot;</span>].copy())

format_as_transcription(outputs)`,wrap:!1}}),ae=new c({props:{code:"U1BFQUtFUl8wMSUyMCgwLjAlMkMlMjAxNS41KSUyMFRoZSUyMHNlY29uZCUyMGFuZCUyMGltcG9ydGFuY2UlMjBpcyUyMGFzJTIwZm9sbG93cy4lMjBTb3ZlcmVpZ250eSUyMG1heSUyMGJlJTIwZGVmaW5lZCUyMHRvJTIwYmUlMjB0aGUlMjByaWdodCUyMG9mJTIwbWFraW5nJTIwbGF3cy4lMEFJbiUyMEZyYW5jZSUyQyUyMHRoZSUyMGtpbmclMjByZWFsbHklMjBleGVyY2lzZXMlMjBhJTIwcG9ydGlvbiUyMG9mJTIwdGhlJTIwc292ZXJlaWduJTIwcG93ZXIlMkMlMjBzaW5jZSUyMHRoZSUyMGxhd3MlMjBoYXZlJTIwbm8lMjB3ZWlnaHQuJTBBJTBBU1BFQUtFUl8wMCUyMCgxNS41JTJDJTIwMjEuMyklMjBIZSUyMHdhcyUyMGluJTIwYSUyMGZhdm9yZWQlMjBzdGF0ZSUyMG9mJTIwbWluZCUyQyUyMG93aW5nJTIwdG8lMjB0aGUlMjBibGlnaHQlMjBoaXMlMjB3aWZlJ3MlMjBhY3Rpb24lMjB0aHJlYXRlbmVkJTIwdG8lMjBjYXN0JTIwdXBvbiUwQWhpcyUyMGVudGlyZSUyMGZ1dHVyZS4=",highlighted:`SPEAKER_01 (0.0, 15.5) The second and importance is as follows. Sovereignty may be defined to be the right of making laws.
In France, the king really exercises a portion of the sovereign power, since the laws have no weight.

SPEAKER_00 (15.5, 21.3) He was in a favored state of mind, owing to the blight his wife&#x27;s action threatened to cast upon
his entire future.`,wrap:!1}}),oe=new qt({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/fr/chapter7/transcribe-meeting.mdx"}}),{c(){J=i("meta"),U=s(),h=i("p"),ue=s(),r(f.$$.fragment),Me=s(),I=i("p"),I.innerHTML=nt,ye=s(),T=i("div"),T.innerHTML=st,de=s(),r(j.$$.fragment),me=s(),b=i("p"),b.innerHTML=at,ce=s(),C=i("p"),C.innerHTML=it,Je=s(),r(g.$$.fragment),Ue=s(),G=i("p"),G.innerHTML=ot,Te=s(),B=i("p"),B.textContent=rt,we=s(),r($.$$.fragment),he=s(),Z=i("p"),Z.innerHTML=pt,fe=s(),r(v.$$.fragment),Ie=s(),x=i("p"),x.textContent=ut,je=s(),r(W.$$.fragment),be=s(),S=i("p"),S.innerHTML=Mt,Ce=s(),r(q.$$.fragment),ge=s(),r(N.$$.fragment),Ge=s(),Q=i("p"),Q.textContent=yt,Be=s(),r(k.$$.fragment),$e=s(),A=i("p"),A.innerHTML=dt,Ze=s(),r(H.$$.fragment),ve=s(),R=i("p"),R.innerHTML=mt,xe=s(),r(X.$$.fragment),We=s(),r(E.$$.fragment),Se=s(),V=i("p"),V.innerHTML=ct,qe=s(),r(_.$$.fragment),Ne=s(),F=i("p"),F.textContent=Jt,Qe=s(),z=i("p"),z.innerHTML=Ut,ke=s(),r(Y.$$.fragment),Ae=s(),D=i("p"),D.innerHTML=Tt,He=s(),r(L.$$.fragment),Re=s(),r(w.$$.fragment),Xe=s(),P=i("p"),P.textContent=wt,Ee=s(),r(K.$$.fragment),Ve=s(),r(O.$$.fragment),_e=s(),ee=i("p"),ee.textContent=ht,Fe=s(),te=i("p"),te.innerHTML=ft,ze=s(),r(le.$$.fragment),Ye=s(),ne=i("p"),ne.textContent=It,De=s(),r(se.$$.fragment),Le=s(),r(ae.$$.fragment),Pe=s(),ie=i("p"),ie.innerHTML=jt,Ke=s(),r(oe.$$.fragment),Oe=s(),re=i("p"),this.h()},l(e){const t=Zt("svelte-u9bgzb",document.head);J=o(t,"META",{name:!0,content:!0}),t.forEach(l),U=a(e),h=o(e,"P",{}),Ct(h).forEach(l),ue=a(e),p(f.$$.fragment,e),Me=a(e),I=o(e,"P",{"data-svelte-h":!0}),m(I)!=="svelte-hby70b"&&(I.innerHTML=nt),ye=a(e),T=o(e,"DIV",{class:!0,"data-svelte-h":!0}),m(T)!=="svelte-9us2ce"&&(T.innerHTML=st),de=a(e),p(j.$$.fragment,e),me=a(e),b=o(e,"P",{"data-svelte-h":!0}),m(b)!=="svelte-9asgyy"&&(b.innerHTML=at),ce=a(e),C=o(e,"P",{"data-svelte-h":!0}),m(C)!=="svelte-ukj1lw"&&(C.innerHTML=it),Je=a(e),p(g.$$.fragment,e),Ue=a(e),G=o(e,"P",{"data-svelte-h":!0}),m(G)!=="svelte-1xn3uo4"&&(G.innerHTML=ot),Te=a(e),B=o(e,"P",{"data-svelte-h":!0}),m(B)!=="svelte-zyib0w"&&(B.textContent=rt),we=a(e),p($.$$.fragment,e),he=a(e),Z=o(e,"P",{"data-svelte-h":!0}),m(Z)!=="svelte-xmpjju"&&(Z.innerHTML=pt),fe=a(e),p(v.$$.fragment,e),Ie=a(e),x=o(e,"P",{"data-svelte-h":!0}),m(x)!=="svelte-fhgr8s"&&(x.textContent=ut),je=a(e),p(W.$$.fragment,e),be=a(e),S=o(e,"P",{"data-svelte-h":!0}),m(S)!=="svelte-1369zfn"&&(S.innerHTML=Mt),Ce=a(e),p(q.$$.fragment,e),ge=a(e),p(N.$$.fragment,e),Ge=a(e),Q=o(e,"P",{"data-svelte-h":!0}),m(Q)!=="svelte-1moywhu"&&(Q.textContent=yt),Be=a(e),p(k.$$.fragment,e),$e=a(e),A=o(e,"P",{"data-svelte-h":!0}),m(A)!=="svelte-6sf52h"&&(A.innerHTML=dt),Ze=a(e),p(H.$$.fragment,e),ve=a(e),R=o(e,"P",{"data-svelte-h":!0}),m(R)!=="svelte-pof06e"&&(R.innerHTML=mt),xe=a(e),p(X.$$.fragment,e),We=a(e),p(E.$$.fragment,e),Se=a(e),V=o(e,"P",{"data-svelte-h":!0}),m(V)!=="svelte-1wlo1bc"&&(V.innerHTML=ct),qe=a(e),p(_.$$.fragment,e),Ne=a(e),F=o(e,"P",{"data-svelte-h":!0}),m(F)!=="svelte-18js553"&&(F.textContent=Jt),Qe=a(e),z=o(e,"P",{"data-svelte-h":!0}),m(z)!=="svelte-z64b31"&&(z.innerHTML=Ut),ke=a(e),p(Y.$$.fragment,e),Ae=a(e),D=o(e,"P",{"data-svelte-h":!0}),m(D)!=="svelte-h6xq96"&&(D.innerHTML=Tt),He=a(e),p(L.$$.fragment,e),Re=a(e),p(w.$$.fragment,e),Xe=a(e),P=o(e,"P",{"data-svelte-h":!0}),m(P)!=="svelte-134cz5p"&&(P.textContent=wt),Ee=a(e),p(K.$$.fragment,e),Ve=a(e),p(O.$$.fragment,e),_e=a(e),ee=o(e,"P",{"data-svelte-h":!0}),m(ee)!=="svelte-1n4km0w"&&(ee.textContent=ht),Fe=a(e),te=o(e,"P",{"data-svelte-h":!0}),m(te)!=="svelte-c2e9es"&&(te.innerHTML=ft),ze=a(e),p(le.$$.fragment,e),Ye=a(e),ne=o(e,"P",{"data-svelte-h":!0}),m(ne)!=="svelte-s5x4ff"&&(ne.textContent=It),De=a(e),p(se.$$.fragment,e),Le=a(e),p(ae.$$.fragment,e),Pe=a(e),ie=o(e,"P",{"data-svelte-h":!0}),m(ie)!=="svelte-1g6eraq"&&(ie.innerHTML=jt),Ke=a(e),p(oe.$$.fragment,e),Oe=a(e),re=o(e,"P",{}),Ct(re).forEach(l),this.h()},h(){lt(J,"name","hf:doc:metadata"),lt(J,"content",kt),lt(T,"class","flex justify-center")},m(e,t){vt(document.head,J),n(e,U,t),n(e,h,t),n(e,ue,t),u(f,e,t),n(e,Me,t),n(e,I,t),n(e,ye,t),n(e,T,t),n(e,de,t),u(j,e,t),n(e,me,t),n(e,b,t),n(e,ce,t),n(e,C,t),n(e,Je,t),u(g,e,t),n(e,Ue,t),n(e,G,t),n(e,Te,t),n(e,B,t),n(e,we,t),u($,e,t),n(e,he,t),n(e,Z,t),n(e,fe,t),u(v,e,t),n(e,Ie,t),n(e,x,t),n(e,je,t),u(W,e,t),n(e,be,t),n(e,S,t),n(e,Ce,t),u(q,e,t),n(e,ge,t),u(N,e,t),n(e,Ge,t),n(e,Q,t),n(e,Be,t),u(k,e,t),n(e,$e,t),n(e,A,t),n(e,Ze,t),u(H,e,t),n(e,ve,t),n(e,R,t),n(e,xe,t),u(X,e,t),n(e,We,t),u(E,e,t),n(e,Se,t),n(e,V,t),n(e,qe,t),u(_,e,t),n(e,Ne,t),n(e,F,t),n(e,Qe,t),n(e,z,t),n(e,ke,t),u(Y,e,t),n(e,Ae,t),n(e,D,t),n(e,He,t),u(L,e,t),n(e,Re,t),u(w,e,t),n(e,Xe,t),n(e,P,t),n(e,Ee,t),u(K,e,t),n(e,Ve,t),u(O,e,t),n(e,_e,t),n(e,ee,t),n(e,Fe,t),n(e,te,t),n(e,ze,t),u(le,e,t),n(e,Ye,t),n(e,ne,t),n(e,De,t),u(se,e,t),n(e,Le,t),u(ae,e,t),n(e,Pe,t),n(e,ie,t),n(e,Ke,t),u(oe,e,t),n(e,Oe,t),n(e,re,t),et=!0},p(e,[t]){const bt={};t&2&&(bt.$$scope={dirty:t,ctx:e}),w.$set(bt)},i(e){et||(M(f.$$.fragment,e),M(j.$$.fragment,e),M(g.$$.fragment,e),M($.$$.fragment,e),M(v.$$.fragment,e),M(W.$$.fragment,e),M(q.$$.fragment,e),M(N.$$.fragment,e),M(k.$$.fragment,e),M(H.$$.fragment,e),M(X.$$.fragment,e),M(E.$$.fragment,e),M(_.$$.fragment,e),M(Y.$$.fragment,e),M(L.$$.fragment,e),M(w.$$.fragment,e),M(K.$$.fragment,e),M(O.$$.fragment,e),M(le.$$.fragment,e),M(se.$$.fragment,e),M(ae.$$.fragment,e),M(oe.$$.fragment,e),et=!0)},o(e){y(f.$$.fragment,e),y(j.$$.fragment,e),y(g.$$.fragment,e),y($.$$.fragment,e),y(v.$$.fragment,e),y(W.$$.fragment,e),y(q.$$.fragment,e),y(N.$$.fragment,e),y(k.$$.fragment,e),y(H.$$.fragment,e),y(X.$$.fragment,e),y(E.$$.fragment,e),y(_.$$.fragment,e),y(Y.$$.fragment,e),y(L.$$.fragment,e),y(w.$$.fragment,e),y(K.$$.fragment,e),y(O.$$.fragment,e),y(le.$$.fragment,e),y(se.$$.fragment,e),y(ae.$$.fragment,e),y(oe.$$.fragment,e),et=!1},d(e){e&&(l(U),l(h),l(ue),l(Me),l(I),l(ye),l(T),l(de),l(me),l(b),l(ce),l(C),l(Je),l(Ue),l(G),l(Te),l(B),l(we),l(he),l(Z),l(fe),l(Ie),l(x),l(je),l(be),l(S),l(Ce),l(ge),l(Ge),l(Q),l(Be),l($e),l(A),l(Ze),l(ve),l(R),l(xe),l(We),l(Se),l(V),l(qe),l(Ne),l(F),l(Qe),l(z),l(ke),l(Ae),l(D),l(He),l(Re),l(Xe),l(P),l(Ee),l(Ve),l(_e),l(ee),l(Fe),l(te),l(ze),l(Ye),l(ne),l(De),l(Le),l(Pe),l(ie),l(Ke),l(Oe),l(re)),l(J),d(f,e),d(j,e),d(g,e),d($,e),d(v,e),d(W,e),d(q,e),d(N,e),d(k,e),d(H,e),d(X,e),d(E,e),d(_,e),d(Y,e),d(L,e),d(w,e),d(K,e),d(O,e),d(le,e),d(se,e),d(ae,e),d(oe,e)}}}const kt='{"title":"Transcrire une réunion","local":"transcrire-une-réunion","sections":[{"title":"Séparation des locuteurs","local":"séparation-des-locuteurs","sections":[],"depth":2},{"title":"Transcription de la parole","local":"transcription-de-la-parole","sections":[],"depth":2},{"title":"Speechbox","local":"speechbox","sections":[],"depth":2}],"depth":1}';function At(pe){return Gt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class _t extends Bt{constructor(J){super(),$t(this,J,At,Qt,gt,{})}}export{_t as component};
