File size: 2,358 Bytes
ab2f0cf
 
 
 
d587e3c
ab2f0cf
 
 
 
 
 
 
 
d8e0155
ab2f0cf
d8e0155
ab2f0cf
 
 
 
 
 
 
d8e0155
dc61d2e
d8e0155
dc61d2e
d8e0155
 
dc61d2e
 
 
d8e0155
 
 
dc61d2e
d8e0155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dc61d2e
d8e0155
 
ab2f0cf
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
63
64
65
66
67
import requests
import pytz
import streamlit as st
from datetime import datetime
from audio_recorder_streamlit import audio_recorder

def generate_filename(prompt, file_type):
    central = pytz.timezone('US/Central')
    safe_date_time = datetime.now(central).strftime("%m%d_%H%M")
    replaced_prompt = prompt.replace(" ", "_").replace("\n", "_")
    safe_prompt = "".join(x for x in replaced_prompt if x.isalnum() or x == "_")[:90]
    return f"{safe_date_time}_{safe_prompt}.{file_type}"

# 10. Audio recorder to Wav file:
def save_and_play_audio(audio_recorder):
    audio_bytes = audio_recorder()
    if audio_bytes:
        filename = generate_filename("Recording", "wav")
        with open(filename, 'wb') as f:
            f.write(audio_bytes)
        st.audio(audio_bytes, format="audio/wav")
        return filename

# 9B. Speech transcription to file output - OPENAI Whisper
def transcribe_audio(file_path):
    key=os.getenv('IE_KEY')
    headers = {
	"Authorization": f"Bearer {key}",
	"Content-Type": "audio/wav"
    }
    with open(file_path, 'rb') as f:
        data = {'file': f}
        API_URL = "https://tonpixzfvq3791u9.us-east-1.aws.endpoints.huggingface.cloud"
        response = requests.post(API_URL, headers=headers, data=data) 

    if response.status_code == 200:
        st.write('Reasoning with your transcription..')
        try:
            transcript=response.json().get('text')
        except:
            transcript=response

        st.write(transcript)
        #gptResponse = chat_with_model(transcript, systemPrompt=user_prompt_System, model=MODELCHOICE) # send transcript to ChatGPT - prompts, systemPrompt=SYSTEM_PROMPT, model="Gpt-4-32k"
        #filename = generate_filename(transcript, choice)
        #create_file(filename, transcript, gptResponse) # write output file
        #return gptResponse
    else:
        #st.write(response.json())
        #st.error("Error in API call.")
        return None

def main():
    st.title("Speech to Text")
    st.write("Record your speech and get the text.")

    # Audio, transcribe, GPT:
    filename = save_and_play_audio(audio_recorder)
    if filename is not None:
        transcription = transcribe_audio(filename)
        #st.sidebar.markdown(get_table_download_link(filename), unsafe_allow_html=True)
        filename = None

if __name__ == "__main__":
    main()