nyrahealth / CrisperWhisper

Verbatim Automatic Speech Recognition with improved word-level timestamps and filler detection
Other
260 stars 11 forks source link

list index out of range + faster-whisper implementation loosing chunks #7

Closed tsmdt closed 1 month ago

tsmdt commented 1 month ago

Hi!

Thank you for your efforts, your model looks very promising! I ran into some problems using your transformers example as well as the faster-whisper implementation and would ne happy if you could help me out.

transformers Whenever I run your example code in Google colab on an A100 with my test files the result is the following index error; I tested 3 files that run with faster-whisper on "large-v2" with no problem:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
[<ipython-input-7-0222e1675eb9>](https://localhost:8080/#) in <cell line: 28>()
     26 # sample = dataset[0]["audio"]
     27 
---> 28 hf_pipeline_output = pipe('/content/files/Uni_Mannheim__Sehr_schwer_gute_Noten_zu_erreichen_converted.wav')
     29 crisper_whisper_result = adjust_pauses_for_hf_pipeline_output(hf_pipeline_output)
     30 print(crisper_whisper_result)

5 frames
[/usr/local/lib/python3.10/dist-packages/transformers/models/whisper/tokenization_whisper.py](https://localhost:8080/#) in _decode_asr(tokenizer, model_outputs, return_timestamps, return_language, time_precision)
   1042                 current_tokens.append(token)
   1043                 if return_timestamps == "word":
-> 1044                     start_time = round(token_timestamps[i] + time_offset, 2)
   1045                     if i + 1 < len(token_timestamps):
   1046                         end_time = round(token_timestamps[i + 1] + time_offset, 2)

IndexError: list index out of range

If you want to reproduce the error, find the files here: https://file.io/JqOvjkfeADNK

CrisperWhisper + faster-whisper I could get this implementation running for my test files, but the transcription is omitting some text chunks that faster-whisper with "large-v2" is not:

## CrisperWhisper
(' Uni Mannheim, sehr schwer gute Noten zu erreichen? Das heißt, du hast halt '
 'nur top Abiturienten, die da sitzen, so und [UH] die sind halt größtenteils '
 'auch super motiviert. Das heißt, die sind alle schlau, die wissen alle, wie '
 'man lernt, und die wollen alle Gas geben. Das heißt [UH] trotzdem ist halt '
 'der Notenschnitt in so einer Klausur da nicht eins Komma drei, sondern [UH] '
 'zwei Komma vier, zwei Komma fünf. Das heißt [UH] es gibt dort halt einen '
 'Haufen Leute, die ein 1 2 Abi gemacht haben, die dann in Mannheim dann [UH] '
 'ja echt echt [UH] schlechte Noten schreiben, so, und das ist dann natürlich '
 'ein richtiger Shocker für die Leute. Das heißt, vor allem, wenn du in '
 'Mannheim studierst, vor allem, wenn du ein gutes Abi gemacht hast, du darfst '
 'nicht erwarten [UH] dass du, dass das genauso wird wie im Abitur. Das kannst '
 'du vielleicht an anderen an einer Fachhochschule, an an anderen Unis, die '
 'jetzt nicht so hohe NCs haben, da kannst du dann irgendwie grob erwarten, '
 'okay, du wirst wahrscheinlich immer noch zu den Besten gehschreiben, mit den '
 'richtigen Systemen, mit der richtigen Technik, aber wenn du genauso weiter '
 'lernst wie in der Schule, dann wird das immer re. Das ist ein richtiges [UH] '
 'Fiasko auf jeden Fall werden. Ja.Ja.')

After the initial question "Uni Mannheim, sehr schwer gute Noten zu erreichen?" there is a whole chunk missing, that is present if I transcribe the file with faster-whisper and "large-v2":

## faster-whisper "large-v2"
('Unimannheim, sehr schwer gute Noten zu erreichen? Ja, auf jeden Fall. Also '
 'die Unimannheim ist so, was die staatlichen Unis angeht für BWL, schon so '
 'das Heftigste, da ja der normale NC irgendwie immer so bei 1,4, 1,5 in etwa '
 'liegt. Das heißt, du hast halt nur top Abiturienten, die da sitzen. Und die '
 'sind halt größtenteils auch super motiviert, das heißt, die sind alle '
 'schlau, die wissen alle, wie man lernt und die wollen alle Gas geben. Das '
 'heißt, trotzdem ist der Notenschnitt in so einer Klausur nicht 1,3, sondern '
 '2,4, 2,5. Das heißt, es gibt dort einen Haufen Leute, die ein 1,2er-Abi '
 'gemacht haben, die dann in Mannheim echt schlechte Noten schreiben. Das ist '
 'dann natürlich ein richtiger Schocker für die Leute. Das heißt, vor allem, '
 'wenn du in Mannheim studierst, vor allem, wenn du ein gutes Abi gemacht '
 'hast, du darfst nicht erwarten, dass das genauso wird wie im Abitur. Das '
 'kannst du vielleicht dann ... ... an einer Fachhochschule, an anderen Unis, '
 '... ... die jetzt nicht so hohe NCs haben, ... ... da kannst du dann '
 'irgendwie grob erwarten, ... ... okay, du wirst wahrscheinlich immer noch '
 '... ... zu den Besten gehören in Mannheim. Also, es ist auf jeden Fall '
 'möglich, ... ... dort auch sehr gute Noten zu schreiben ... ... mit den '
 'richtigen Systemen, mit der richtigen Technik, ... ... aber wenn du genauso '
 'weiterlernst wie in der Schule, ... ... dann wird das ein richtiges Fiasko '
 'auf jeden Fall werden.')

Do you have any ideas why the faster-whisper implementation is loosing those chunks? Any hints on resolving the IndexError for the transformers implementation?

Thanks! 🙂

LaurinmyReha commented 1 month ago

Hi :)

Thank you. Could you try installing this fork of transformers: pip install git+https://github.com/nyrahealth/transformers.git@crisper_whisper and run it with that? That works alteast for me.

For your second question: The model is generally trained to listen to the primary speaker, meaning in training there were many audios that contain overlapped speech or speech where the main speaker ( usually the louder one) is transcribed only. This is because in our production settings this is what we want. Now in your audio it starts out with two different speakers talking.... What i guess is happening here is that the model gets confused who the main speaker is, starts transcribing the woman and assumes she is the main speaker and leaves out the man, later starting to transcribe him again ( in the beginning 30 second chunk) . I am currently in the process of upgrading CrisperWhisper generally, making it more verbatim with even better timestamps and training a version that is supposed to transcribe ,,everything" instead of focusing on the main speaker.

tsmdt commented 1 month ago

Hi,

thanks, I installed the fork and now everything works fine! 🙂 Regarding the second question: very interesting! I stumpled upon CrisperWhisper to mitigate the normalizations introduced via Whisper. A CrisperWhisper working for multiple overlapping speakers would be very useful indeed. Can you already say when the new version will be released?

LaurinmyReha commented 1 month ago

Glad this fixed your issue. I would guess in around 6-8 Weeks.