import gradio as gr import assemblyai from transformers import pipeline # Initialize sentiment analysis model sentiment_analyzer = pipeline("text-classification", model="Vasanth/tamil-sentiment-distilbert") # Placeholder transcription functions - Replace with your actual API implementation def whisper_openai_transcribe(audio_file): import whisper # Load the Whisper model for transcription whisper_model = whisper.load_model("large") # Use 'base', 'small', 'medium', or 'large' depending on your need """ Transcribe audio file using Whisper. """ # Transcribe the audio file result = whisper_model.transcribe(audio_file) # Get the transcribed text transcribed_text = result['text'] return transcribed_text def deepgram_transcribe(audio_file): from deepgram import DeepgramClient, PrerecordedOptions, Filesource DEEPGRAM_API_KEY = "aeb38b43a17867c59928e6a103ac75c06d4e896d" with open(audio_file, "rb") as file: buffer_data = file.read() payload: FileSource = { "buffer": buffer_data, } try: deepgram = DeepgramClient(DEEPGRAM_API_KEY) options = PrerecordedOptions( model="enhanced", language="ta", smart_format=True, punctuate=True, paragraphs=True, utterances=True, keywords=[":"], diarize=True, ) response = deepgram.listen.rest.v("1").transcribe_file(payload, options) print(response.to_json(indent=4)) transcript = response['results']['channels'][0]['alternatives'][0]['transcript'] print(transcript) return transcript except Exception as e: print(f"Exception: {e}") def assemblyai_transcribe(audio_file): import assemblyai as aai # Replace with your API key aai.settings.api_key = "96206c6070cf4157b84f4f8eb66b5903" # URL of the file to transcribe #FILE_URL = "https://assemblyaiusercontent.com/playground/ECw2Ncu7btO.mp3" #FILE_URL = "C:/lakshmi/AI usecases/tamil_audio1.mp3" # You can also transcribe a local file by passing in a file path # FILE_URL = './path/to/file.mp3' # You can set additional parameters for the transcription config = aai.TranscriptionConfig( speech_model=aai.SpeechModel.nano, language_detection=True ) transcriber = aai.Transcriber(config=config) transcript = transcriber.transcribe(audio_file) if transcript.status == aai.TranscriptStatus.error: print(transcript.error) else: print(transcript.text) # Load a pre-trained sentiment analysis model for Tamil #test_script = "இந்த செய்தி மிகவும் சோகம் மிகுந்தது.இந்த செய்தி நன்றாக உள்ளது." """from transformers import pipeline sentiment_analyzer = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment") result = sentiment_analyzer(transcript.text) print(result) lines = test_script.split('.') # Split the transcript into lines sentiment_results = [] for line in lines: line = line.strip() # Remove leading/trailing whitespace if line: # Only analyze non-empty lines sentiment = sentiment_analyzer(line) sentiment_results.append((line, sentiment)) print(sentiment_results) # Write the Tamil text to a file with open("tamil_text1.txt", "w", encoding="utf-8") as file: file.write(transcript.text) # Write the sentiment analysis results to a file # Write the list of dictionaries in a human-readable format with open("tamil_result.txt", 'w', encoding='utf-8') as file: for result in sentiment_results: file.write(f"Label: {result[0]}, Score: {result[1]}\n") """ return transcript.text # Sentiment analysis function def analyze_sentiment(text): sentiment = sentiment_analyzer(text) return sentiment[0]['label'], sentiment[0]['score'] # Main function to process audio and sentiment analysis def process_transcription_and_sentiment(audio_file, model_choice): # Transcription if model_choice == "Whisper OpenAI": transcription = whisper_openai_transcribe(audio_file) elif model_choice == "Deepgram API": transcription = deepgram_transcribe(audio_file) elif model_choice == "Assembly AI API": transcription = assemblyai_transcribe(audio_file) # Sentiment analysis sentiment_label, sentiment_score = analyze_sentiment(transcription) return transcription, f"Sentiment: {sentiment_label} with score {sentiment_score}" # Gradio interface setup def create_interface(): with gr.Blocks() as demo: gr.Markdown("### Audio Transcription and Sentiment Analysis") with gr.Row(): audio_input = gr.Audio(sources=["upload"], type="filepath", label="Upload Audio File") model_choice = gr.Dropdown( choices=["Whisper OpenAI", "Deepgram API", "Assembly AI API"], label="Choose Transcription Model", value="Whisper OpenAI" ) # Textboxes for transcription and sentiment analysis transcription_output = gr.Textbox(label="Transcription", lines=5) sentiment_output = gr.Textbox(label="Sentiment Analysis", lines=5) # Submit button submit_button = gr.Button("Process") # When the button is clicked, call the `process_transcription_and_sentiment` function submit_button.click(process_transcription_and_sentiment, [audio_input, model_choice], [transcription_output, sentiment_output]) demo.launch() if __name__ == "__main__": create_interface()