import whisper from langchain_core.tools import tool #@tool import whisper import os import os import whisper import subprocess import tempfile import os import whisper import subprocess import tempfile def audio_to_text(file_path: str) -> str: """ Converts an MP3 file to WAV and transcribes it using Whisper. Args: file_path (str): Path to the MP3 file. Returns: str: Transcribed text. """ if not os.path.isfile(file_path): raise FileNotFoundError(f"File not found: {file_path}") # Convert MP3 to temporary WAV file with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as tmp_wav: tmp_wav_path = tmp_wav.name try: # Convert to WAV using ffmpeg subprocess.run( ["ffmpeg", "-y", "-i", file_path, tmp_wav_path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True ) model = whisper.load_model("base") result = model.transcribe(tmp_wav_path) if result is None or "text" not in result: raise ValueError("Transcription failed or result is invalid.") return result["text"] finally: # Clean up temporary WAV file if os.path.exists(tmp_wav_path): os.remove(tmp_wav_path) if __name__ == "__main__": try: print(audio_to_text("C:\\tmp\\ibm\\audio.mp3")) except Exception as e: print(f"Error: {e}")