Final_Assignment_Template / audio_processing.py
Leopoldo Todisco
add agent passing final exam
37267f8
Raw
History Blame Contribute Delete
1.33 kB
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from IPython.display import Audio as IPythonAudio
import os
import soundfile as sf
import io
import numpy
import librosa
from pydub import AudioSegment
asr = pipeline(task="automatic-speech-recognition",
model="distil-whisper/distil-small.en")
def __convert_to_mp3(path:str, extension:str):
print("converto audio...")
audio = AudioSegment.from_file(path, format=extension)
mp3_path = path.split(sep='.')[1] + ".mp3"
audio.export(mp3_path, format="mp3")
return mp3_path
def __convert_to_mono(audio):
transposed_audio = numpy.transpose(audio)
audio_mono = librosa.to_mono(transposed_audio)
audio_16KHz = librosa.resample(audio_mono,
orig_sr=16000,
target_sr=16000)
return audio_16KHz
def run_asr_pipeline(audio_file_url: str, extension: str):
if "mp3" not in extension:
audio_file_url = __convert_to_mp3(extension=extension, path=audio_file_url)
audio, _ = sf.read(audio_file_url)
audio = __convert_to_mono(audio=audio)
return asr(audio)["text"]
# print(run_asr_pipeline(audio_file_url="m4a.mp3",
# extension="mp3"
# ))