Spaces:
Sleeping
Sleeping
import streamlit as st | |
import requests | |
import io | |
# Hugging Face API setup | |
API_URL = "https://api-inference.huggingface.co/models/openai/whisper-large-v3-turbo" | |
# Prompt the user for their Hugging Face API key | |
my_key = st.text_input('Enter your Hugging Face API Key', type='password') | |
# Set up headers with the provided API key | |
headers = {"Authorization": f"Bearer {my_key}"} | |
# Function to send the file to the API and get the transcription result | |
def query(file_data): | |
try: | |
response = requests.post(API_URL, headers=headers, files={'file': file_data}) | |
return response.json() | |
except requests.exceptions.RequestException as e: | |
return {"error": str(e)} | |
# File uploader widget for audio files | |
uploaded_files = st.file_uploader("Choose an audio file", type=["mp3", "wav", "flac"], accept_multiple_files=True) | |
# Handle file uploads and process them if API key is provided | |
if my_key: # Proceed only if the API key is provided | |
if uploaded_files: | |
results = {} | |
for uploaded_file in uploaded_files: | |
st.write(f"Processing file: {uploaded_file.name}") | |
# Validate file type and check if it's in the correct format | |
file_type = uploaded_file.type | |
st.write(f"File type: {file_type}") | |
if file_type not in ["audio/mpeg", "audio/wav", "audio/flac"]: | |
st.write(f"Unsupported file type: {file_type}. Please upload an MP3, WAV, or FLAC file.") | |
continue | |
# Send the file to the Hugging Face API | |
output = query(uploaded_file) | |
# Store and display the result | |
results[uploaded_file.name] = output | |
# Show results for all files | |
st.write("Results:") | |
for file, result in results.items(): | |
st.write(f"**Results for {file}:**") | |
st.json(result) | |
else: | |
st.write("Please upload an audio file to transcribe.") | |
else: | |
st.write("Please enter your Hugging Face API key to proceed.") | |