File size: 1,908 Bytes
ab58fb5
9d727e3
 
f3e24b8
b74cc3f
ab58fb5
253b4e4
 
 
 
 
 
 
 
 
866ffb3
 
 
 
 
b74cc3f
3e7fc84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
866ffb3
253b4e4
b03d0c5
4ebf6a9
b03d0c5
 
 
 
 
 
 
 
 
 
3277eaa
2040736
4ebf6a9
2040736
34b0634
2040736
 
 
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import streamlit as st
import whisper
import os
from transformers import pipeline
from pydub import AudioSegment

def transcribe_audio(audiofile):

    st.session_state['audio'] = audiofile
    print(f"audio_file_session_state:{st.session_state['audio'] }")

    #get size of audio file
    audio_size = round(os.path.getsize(st.session_state['audio'])/(1024*1024),1)
    print(f"audio file size:{audio_size}")

    #determine audio duration
    podcast = AudioSegment.from_mp3(st.session_state['audio'])
    st.session_state['audio_segment'] = podcast
    podcast_duration = podcast.duration_seconds
    print(f"Audio Duration: {podcast_duration}")

    st.info('Breaking podcast into 5 minute chunks.')
    #break into 5 minute chunks
    chunk_length_five_minutes = 5 * 60 * 1000
    podcast_chunks = podcast[::chunk_length_five_minutes]

    st.info('Transcribe')

    #transcriptions = []
    
    #for i, chunk in enumerate(podcast_chunks):
    #    chunk.export(f'output/chunk_{i}.mp4', format='mp4')
    
    # following blogpost here: https://huggingface.co/blog/asr-chunking
    transcribe_pipe = pipeline(model="facebook/wav2vec2-base-960h")
    transcription = transcribe_pipe(audiofile, chunk_length_s=10, stride_length_s=(4, 2))

    print(f"transcription: {transcription}")

    return podcast_duration

st.markdown("# Podcast Q&A")

st.markdown(
        """
        This helps understand information-dense podcast episodes by doing the following:
        - Speech to Text transcription - using OpenSource Whisper Model
        - Summarizes the episode
        - Allows you to ask questions and returns direct quotes from the episode.

        """
        )

if st.button("Process Audio File"):
    transcribe_audio("marketplace-2023-06-14.mp3")

#audio_file = st.file_uploader("Upload audio copy of file", key="upload", type=['.mp3'])


# if audio_file:
#    transcribe_audio(audio_file)