AndrewLam489's picture
Update app.py
18a53a3 verified
raw
history blame
2.06 kB
import streamlit as st
import requests
from pydub import AudioSegment
from io import BytesIO
# Access the Hugging Face API key from the secrets
CTP_DATASCIENCE = st.secrets.get("CTP_DATASCIENCE")
# Set up the headers for the Hugging Face API request using the API key
headers = {"Authorization": f"Bearer {CTP_DATASCIENCE}"}
# Define the Hugging Face API URL for Whisper model
API_URL = "https://api-inference.huggingface.co/models/openai/whisper-large-v3-turbo"
# Function to make the API request with the given file URL
def query(file_url):
# Download the audio file from the Hugging Face Space URL
response = requests.get(file_url)
if response.status_code == 200:
# Process the audio file into a compatible format (16 kHz, mono)
audio_file = BytesIO(response.content)
# Load and process the audio file using pydub
audio = AudioSegment.from_file(audio_file)
audio = audio.set_channels(1) # Ensure mono audio
audio = audio.set_frame_rate(16000) # Ensure 16 kHz sample rate
# Save the processed audio to a buffer in WAV format
audio_buffer = BytesIO()
audio.export(audio_buffer, format="wav") # Export as WAV to ensure compatibility
audio_buffer.seek(0) # Reset pointer to the start of the buffer
# Send the audio data to the Hugging Face API
response_api = requests.post(API_URL, headers=headers, files={"file": audio_buffer})
if response_api.status_code == 200:
return response_api.json() # Return the transcription result
else:
return {"error": "Failed to process the audio with Hugging Face API."}
else:
return {"error": "Failed to download the file from the provided URL."}
# URL to your audio file on Hugging Face Space
file_url = "https://huggingface.co/spaces/AndrewLam489/PillID_Transcribe/resolve/main/Greenpill2.mp3"
# Call the function with the audio file URL
output = query(file_url)
# Display the output of the API request
st.write(output)