| import requests |
| from io import BytesIO |
| from typing import Optional |
|
|
| import openai |
|
|
| from . import APIProvider, register |
|
|
|
|
| @register("openai") |
| class OpenAIProvider(APIProvider): |
| def transcribe( |
| self, |
| model_variant: str, |
| audio_file_path: Optional[str], |
| sample: dict, |
| use_url: bool = False, |
| language: str = "en", |
| ) -> str: |
| if use_url: |
| response = requests.get(sample["row"]["audio"][0]["src"]) |
| audio_data = BytesIO(response.content) |
| response = openai.Audio.transcribe( |
| model=model_variant, |
| file=audio_data, |
| response_format="text", |
| language=language, |
| temperature=0.0, |
| ) |
| else: |
| with open(audio_file_path, "rb") as audio_file: |
| response = openai.Audio.transcribe( |
| model=model_variant, |
| file=audio_file, |
| response_format="text", |
| language=language, |
| temperature=0.0, |
| ) |
| return response.strip() |
|
|