| from faster_whisper import WhisperModel | |
| import base64, tempfile, os | |
| model = WhisperModel("base") | |
| def speechToText(audioBase64: str, sourceLang: str) -> dict: | |
| tempAudioPath = None | |
| try: | |
| audioBytes = base64.b64decode(audioBase64) | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".m4a") as tempFile: | |
| tempFile.write(audioBytes) | |
| tempAudioPath = tempFile.name | |
| segments, info = model.transcribe(tempAudioPath, language=sourceLang) | |
| text = " ".join(segment.text for segment in segments) | |
| return {'text': text, 'language': info.language, 'duration': info.duration} | |
| finally: | |
| if tempAudioPath and os.path.exists(tempAudioPath): | |
| os.remove(tempAudioPath) | |