Whisper: предобработка и постобработка аудио
Улучшаем качество транскрипции Whisper через обрезку начальной тишины, разбивку длинных файлов на сегменты и GPT-постобработку: добавление пунктуации, исправление финансовых терминов и удаление non-ASCII артефактов.
Скачайте любой WAV-файл длиннее 2 минут, обрежьте тишину с помощью PyDub, разбейте на 60-секундные сегменты, транскрибируйте каждый через Whisper и объедините результат. Прогоните итоговый текст через GPT для расстановки пунктуации.
Проверка задания
Скопируйте и адаптируйте под свой контекст. Текст в треугольных скобках — то, что нужно заменить.
from pydub import AudioSegment
from openai import OpenAI
from pathlib import Path
import os
client = OpenAI()
def trim_and_segment(path, seg_ms=60_000, threshold_db=-20.0):
audio = AudioSegment.from_file(path)
trim = next(
(i for i in range(0, len(audio), 10)
if audio[i:i+10].dBFS >= threshold_db),
0,
)
audio = audio[trim:]
return [audio[s:s+seg_ms] for s in range(0, len(audio), seg_ms)]
def transcribe_segments(segments):
texts = []
for i, seg in enumerate(segments):
tmp = f"/tmp/seg_{i:02d}.wav"
seg.export(tmp, format="wav")
with open(tmp, "rb") as f:
texts.append(client.audio.transcriptions.create(
model="whisper-1", file=f).text)
return " ".join(texts)