File size: 1,332 Bytes
37267f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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"
#                        ))