adding function to remove whisper hallucinations

This commit is contained in:
Steffen Albrecht
2023-12-08 14:57:32 +01:00
parent 28b314de8d
commit 98c1c7dfa5
+117
View File
@@ -5,6 +5,110 @@ from typing import Union
ALPHABET = [*"abcdefghijklmnopqrstuvwxyz"]
WHISPER_HALLUCINATIONS={
"en": [
" www.mooji.org",
],
"nl": [
" Ondertitels ingediend door de Amara.org gemeenschap",
" Ondertiteld door de Amara.org gemeenschap",
" Ondertiteling door de Amara.org gemeenschap"
],
"de": [
" Untertitelung aufgrund der Amara.org-Community"
" Untertitel im Auftrag des ZDF für funk, 2017",
" Untertitel von Stephanie Geiges",
" Untertitel der Amara.org-Community",
" Untertitel im Auftrag des ZDF, 2017",
" Untertitel im Auftrag des ZDF, 2020",
" Untertitel im Auftrag des ZDF, 2018",
" Untertitel im Auftrag des ZDF, 2021",
" Untertitelung im Auftrag des ZDF, 2021",
" Copyright WDR 2021",
" Copyright WDR 2020",
" Copyright WDR 2019",
" SWR 2021",
" SWR 2020",
],
"fr": [
" Sous-titres réalisés para la communauté d'Amara.org",
" Sous-titres réalisés par la communauté d'Amara.org",
" Sous-titres fait par Sous-titres par Amara.org",
" Sous-titres réalisés par les SousTitres d'Amara.org",
" Sous-titres par Amara.org",
" Sous-titres par la communauté d'Amara.org",
" Sous-titres réalisés pour la communauté d'Amara.org",
" Sous-titres réalisés par la communauté de l'Amara.org",
" Sous-Titres faits par la communauté d'Amara.org",
" Sous-titres par l'Amara.org",
" Sous-titres fait par la communauté d'Amara.org"
" Sous-titrage ST' 501",
" Sous-titrage ST'501",
" Cliquez-vous sur les sous-titres et abonnez-vous à la chaîne d'Amara.org",
" ❤️ par SousTitreur.com",
],
"it": [
" Sottotitoli creati dalla comunità Amara.org",
" Sottotitoli di Sottotitoli di Amara.org",
" Sottotitoli e revisione al canale di Amara.org",
" Sottotitoli e revisione a cura di Amara.org",
" Sottotitoli e revisione a cura di QTSS",
" Sottotitoli e revisione a cura di QTSS.",
" Sottotitoli a cura di QTSS",
],
"es": [
" Subtítulos realizados por la comunidad de Amara.org",
" Subtitulado por la comunidad de Amara.org",
" Subtítulos por la comunidad de Amara.org",
" Subtítulos creados por la comunidad de Amara.org",
" Subtítulos en español de Amara.org",
" Subtítulos hechos por la comunidad de Amara.org",
" Subtitulos por la comunidad de Amara.org"
" Más información www.alimmenta.com",
" www.mooji.org",
],
"gl": [
" Subtítulos realizados por la comunidad de Amara.org"
],
"pt": [
" Legendas pela comunidade Amara.org",
" Legendas pela comunidade de Amara.org",
" Legendas pela comunidade do Amara.org",
" Legendas pela comunidade das Amara.org",
" Transcrição e Legendas pela comunidade de Amara.org"
],
"la": [
" Sottotitoli creati dalla comunità Amara.org",
" Sous-titres réalisés para la communauté d'Amara.org"
],
"ln": [
" Sous-titres réalisés para la communauté d'Amara.org"
],
"pl": [
" Napisy stworzone przez społeczność Amara.org",
" Napisy wykonane przez społeczność Amara.org",
" Zdjęcia i napisy stworzone przez społeczność Amara.org",
" napisy stworzone przez społeczność Amara.org",
" Tłumaczenie i napisy stworzone przez społeczność Amara.org",
" Napisy stworzone przez społeczności Amara.org",
" Tłumaczenie stworzone przez społeczność Amara.org",
" Napisy robione przez społeczność Amara.org"
" www.multi-moto.eu",
],
"ru": [
" Редактор субтитров А.Синецкая Корректор А.Егорова"
],
"tr": [
" Yorumlarınızıza abone olmayı unutmayın.",
],
"su": [
" Sottotitoli creati dalla comunità Amara.org"
],
"zh": [
"字幕由Amara.org社区提供",
"小編字幕由Amara.org社區提供"
]
}
class Transcript:
"""
@@ -23,6 +127,7 @@ class Transcript:
"""
self.transcript = transcript
self._remove_hallucinations()
self.speakers = self._extract_speakers()
self.segments = self._extract_segments()
self.annotation = {}
@@ -62,6 +167,18 @@ class Transcript:
return self
def _remove_hallucinations(self) -> None:
segments_to_drop=[]
for id in self.transcript:
for language, snippets in WHISPER_HALLUCINATIONS.items():
for snippet in snippets:
self.transcript[id]['text']=self.transcript[id]['text'].replace(snippet,'')
if self.transcript[id]['text'] == '': segments_to_drop.append(id)
for id in segments_to_drop:
del self.transcript[id]
def _extract_speakers(self) -> list:
"""
Extracts the unique speaker names from the transcript.