Views
No views yet
pip install vllm polars1import io
2import wave
3
4import numpy as np
5import polars as pl
6
7from vllm import LLM, SamplingParams
8
9
10def wav_bytes_to_numpy(wav_bytes):
11 with wave.open(io.BytesIO(wav_bytes), "rb") as wr:
12 if (num_channels := wr.getnchannels()) != 1:
13 raise ValueError(f"num_channels must be 1, got {num_channels}")
14 if (sample_width := wr.getsampwidth()) != 2:
15 raise ValueError(f"sample_width must be 2, got {sample_width}")
16
17 audio_data = wr.readframes(wr.getnframes())
18
19 return np.frombuffer(audio_data, dtype=np.int16).astype(np.float32) / 32768.0
20
21
22llm = LLM(
23 model="Yehor/whisper-large-v2-quantized-uk",
24 max_model_len=448,
25 max_num_seqs=400,
26 gpu_memory_utilization=0.8,
27 limit_mm_per_prompt={"audio": 1},
28)
29
30df = pl.read_parquet("hf://datasets/Yehor/cv10-uk-testset-clean/data/train-*.parquet")
31
32
33for row in df.iter_rows(named=True):
34 current_sample = (
35 wav_bytes_to_numpy(row["audio"]["bytes"]),
36 16_000,
37 )
38
39 inputs = {
40 "encoder_prompt": {
41 "prompt": "",
42 "multi_modal_data": {
43 "audio": current_sample,
44 },
45 },
46 "decoder_prompt": "<|startoftranscript|><|uk|><|transcribe|><|notimestamps|>",
47 }
48
49 sampling_params = SamplingParams(
50 temperature=0,
51 top_p=1.0,
52 max_tokens=200,
53 )
54 outputs = llm.generate(inputs, sampling_params)
55
56 print(f"PROMPT : {outputs[0].prompt}")
57 print(f"TRANSCRIPTION: {row['transcription']}")
58 print(f"PREDICTION: {outputs[0].outputs[0].text}")
59 print("==========================================")