Spaces:
Running
Running
# # import os | |
# # import streamlit as st | |
# # from pydub import AudioSegment | |
# # from groq import Groq | |
# # # Set ffmpeg path | |
# # ffmpeg_path = r"ffmpeg.exe" | |
# # os.environ["PATH"] += os.pathsep + os.path.dirname(ffmpeg_path) | |
# # AudioSegment.converter = ffmpeg_path | |
# # # Groq API configuration | |
# # groq_api_key = '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' # Replace with your actual API key | |
# # client = Groq(api_key=groq_api_key) | |
# # model = 'whisper-large-v3' | |
# # # Function to ensure the file is in a suitable format | |
# # def ensure_suitable_format(file_path): | |
# # allowed_formats = ["flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "opus", "wav", "webm"] | |
# # file_extension = file_path.split('.')[-1].lower() | |
# # if file_extension not in allowed_formats: | |
# # new_file_path = f"{os.path.splitext(file_path)[0]}.wav" | |
# # os.rename(file_path, new_file_path) | |
# # return new_file_path | |
# # return file_path | |
# # # Function to convert audio to WAV | |
# # def convert_audio_to_wav(input_path, output_path): | |
# # audio = AudioSegment.from_file(input_path) | |
# # audio.export(output_path, format="wav") | |
# # return output_path | |
# # # Function to transcribe audio using Groq | |
# # def audio_to_text(filepath): | |
# # with open(filepath, "rb") as file: | |
# # translation = client.audio.translations.create( | |
# # file=(filepath, file.read()), | |
# # model=model, | |
# # ) | |
# # return translation.text | |
# # # Streamlit App UI | |
# # st.title("Audio-to-Text Transcription") | |
# # st.write("Upload an audio file to get the transcribed text.") | |
# # # File upload | |
# # uploaded_file = st.file_uploader("Upload your audio file", type=["flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "opus", "wav", "webm"]) | |
# # if uploaded_file: | |
# # # Save the uploaded file locally | |
# # file_path = os.path.join("uploaded_audio", uploaded_file.name) | |
# # os.makedirs("uploaded_audio", exist_ok=True) | |
# # with open(file_path, "wb") as f: | |
# # f.write(uploaded_file.getbuffer()) | |
# # st.write(f"File uploaded: {uploaded_file.name}") | |
# # # Ensure file format is suitable | |
# # suitable_audio_path = ensure_suitable_format(file_path) | |
# # # Convert audio to WAV | |
# # wav_path = f"{os.path.splitext(suitable_audio_path)[0]}.wav" | |
# # converted_audio = convert_audio_to_wav(suitable_audio_path, wav_path) | |
# # # Transcribe audio | |
# # st.write("Processing transcription...") | |
# # try: | |
# # transcription = audio_to_text(converted_audio) | |
# # st.success("Transcription complete!") | |
# # st.text_area("Transcribed Text", transcription, height=200) | |
# # except Exception as e: | |
# # st.error(f"Error during transcription: {e}") | |
# from pydub import AudioSegment | |
# from groq import Groq | |
# import os | |
# import streamlit as st | |
# # Groq API configuration | |
# groq_api_key = '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' # Replace with your actual API key | |
# client = Groq(api_key=groq_api_key) | |
# model = 'whisper-large-v3' | |
# # Function to ensure the file is in a suitable format | |
# def ensure_suitable_format(file_path): | |
# allowed_formats = ["flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "opus", "wav", "webm"] | |
# file_extension = file_path.split('.')[-1].lower() | |
# if file_extension not in allowed_formats: | |
# new_file_path = f"{os.path.splitext(file_path)[0]}.wav" | |
# os.rename(file_path, new_file_path) | |
# return new_file_path | |
# return file_path | |
# # Function to convert audio to WAV | |
# def convert_audio_to_wav(input_path, output_path): | |
# audio = AudioSegment.from_file(input_path) | |
# audio.export(output_path, format="wav") | |
# return output_path | |
# # Function to transcribe audio using Groq | |
# def audio_to_text(filepath): | |
# with open(filepath, "rb") as file: | |
# translation = client.audio.translations.create( | |
# file=(filepath, file.read()), | |
# model=model, | |
# ) | |
# return translation.text | |
# # Streamlit App UI | |
# st.title("Audio-to-Text Transcription") | |
# st.write("Upload an audio file to get the transcribed text.") | |
# # File upload | |
# uploaded_file = st.file_uploader("Upload your audio file", type=["flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "opus", "wav", "webm"]) | |
# if uploaded_file: | |
# # Save the uploaded file locally | |
# file_path = os.path.join("uploaded_audio", uploaded_file.name) | |
# os.makedirs("uploaded_audio", exist_ok=True) | |
# with open(file_path, "wb") as f: | |
# f.write(uploaded_file.getbuffer()) | |
# st.write(f"File uploaded: {uploaded_file.name}") | |
# # Ensure file format is suitable | |
# suitable_audio_path = ensure_suitable_format(file_path) | |
# # Convert audio to WAV | |
# wav_path = f"{os.path.splitext(suitable_audio_path)[0]}.wav" | |
# converted_audio = convert_audio_to_wav(suitable_audio_path, wav_path) | |
# # Transcribe audio | |
# st.write("Processing transcription...") | |
# try: | |
# transcription = audio_to_text(converted_audio) | |
# st.success("Transcription complete!") | |
# st.text_area("Transcribed Text", transcription, height=200) | |
# except Exception as e: | |
# st.error(f"Error during transcription: {e}") | |
import os | |
import streamlit as st | |
from pydub import AudioSegment | |
from groq import Groq | |
# Function to ensure the file is in a suitable format | |
def ensure_suitable_format(file_path): | |
allowed_formats = ["flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "opus", "wav", "webm"] | |
file_extension = file_path.split('.')[-1].lower() | |
if file_extension not in allowed_formats: | |
new_file_path = f"{os.path.splitext(file_path)[0]}.wav" | |
os.rename(file_path, new_file_path) | |
return new_file_path | |
return file_path | |
# Function to convert audio to WAV | |
def convert_audio_to_wav(input_path, output_path): | |
audio = AudioSegment.from_file(input_path) | |
audio.export(output_path, format="wav") | |
return output_path | |
# Function to transcribe audio using Groq | |
def audio_to_text(filepath, groq_api_key): | |
client = Groq(api_key=groq_api_key) | |
model = 'whisper-large-v3' | |
with open(filepath, "rb") as file: | |
translation = client.audio.translations.create( | |
file=(filepath, file.read()), | |
model=model, | |
) | |
return translation.text | |
# Streamlit App UI | |
st.title("Audio-to-Text Transcription") | |
st.write("Upload an audio file to get the transcribed text.") | |
# Input for API key | |
groq_api_key = st.text_input("Enter your Groq API Key", type="password") | |
# File upload | |
uploaded_file = st.file_uploader("Upload your audio file", type=["flac", "mp3", "mp4", "mpeg", "mpga", "m4a", "ogg", "opus", "wav", "webm"]) | |
if groq_api_key and uploaded_file: | |
# Save the uploaded file locally | |
file_path = os.path.join("uploaded_audio", uploaded_file.name) | |
os.makedirs("uploaded_audio", exist_ok=True) | |
with open(file_path, "wb") as f: | |
f.write(uploaded_file.getbuffer()) | |
st.write(f"File uploaded: {uploaded_file.name}") | |
# Ensure file format is suitable | |
suitable_audio_path = ensure_suitable_format(file_path) | |
# Convert audio to WAV | |
wav_path = f"{os.path.splitext(suitable_audio_path)[0]}.wav" | |
converted_audio = convert_audio_to_wav(suitable_audio_path, wav_path) | |
# Transcribe audio | |
st.write("Processing transcription...") | |
try: | |
transcription = audio_to_text(converted_audio, groq_api_key) | |
st.success("Transcription complete!") | |
st.text_area("Transcribed Text", transcription, height=200) | |
except Exception as e: | |
st.error(f"Error during transcription: {e}") | |
elif not groq_api_key: | |
st.warning("Please enter your Groq API Key to proceed.") | |