Spaces:
No application file
No application file
File size: 7,706 Bytes
0429034 | 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 | """
Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro
Usando a API de Whisper
=======================
Este primeiro exemplo mostra como usar Whisper para realizar uma transcrição de um
áudio gravado em INGLÊS. A trasncrição foi para o PORTUGUÊS 🤗.
NOTA: Você pode primeiro gravar um áudio com o script main.py e depois usar esse áudio
neste script para fazer a transcrição.
Link de estudo:
* https://platform.openai.com/docs/guides/speech-to-text
"""
from docx import Document
import logging
logging.basicConfig(level=logging.INFO)
# Substitua sua chave de API OpenAI:
import openai
import os
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
openai.api_key = os.environ['OPENAI_API_KEY']
# Primeira forma:
#audio_file= open("output.wav", "rb")
#transcript = openai.Audio.transcribe("whisper-1", audio_file, language="pt")
#print(transcript["text"])
# Segunda forma:
def transcribe_audio(audio_file_path: str):
with open(audio_file_path, "rb") as audio_file:
transcription = openai.Audio.transcribe("whisper-1", audio_file, language="pt")
return transcription['text']
"""🔊 Funções que usaremos mais para frente 🔊"""
# Extração de resumo: https://platform.openai.com/docs/tutorials/meeting-minutes/summary-extraction
def abstract_summary_extraction(transcription):
response = openai.ChatCompletion.create(
model="gpt-4",
temperature=0,
messages=[
{
"role": "system",
"content": "Você é uma IA altamente qualificada, treinada em compreensão e resumo de idiomas. \
Gostaria que você lesse o texto a seguir e o resumisse em um parágrafo abstrato conciso. \
Procure reter os pontos mais importantes, fornecendo um resumo coerente e legível que \
possa ajudar a pessoa a compreender os principais pontos da discussão sem a necessidade \
de ler o texto inteiro. Evite detalhes desnecessários ou pontos tangenciais."
},
{
"role": "user",
"content": transcription
}
]
)
return response['choices'][0]['message']['content']
# Extração de pontos-chave: https://platform.openai.com/docs/tutorials/meeting-minutes/key-points-extraction
def key_points_extraction(transcription):
response = openai.ChatCompletion.create(
model="gpt-4",
temperature=0,
messages=[
{
"role": "system",
"content": "Você é uma IA proficiente com especialidade em destilar informações em pontos-chave. \
Com base no texto a seguir, identifique e liste os principais pontos que foram discutidos \
ou levantados. Estas devem ser as ideias, descobertas ou tópicos mais importantes que \
são cruciais para a essência da discussão. Seu objetivo é fornecer uma lista que alguém \
possa ler para entender rapidamente o que foi falado."
},
{
"role": "user",
"content": transcription
}
]
)
return response['choices'][0]['message']['content']
# Extração de itens de ação: https://platform.openai.com/docs/tutorials/meeting-minutes/action-item-extraction
def action_item_extraction(transcription):
response = openai.ChatCompletion.create(
model="gpt-4",
temperature=0,
messages=[
{
"role": "system",
"content": "Você é um especialista em IA na análise de conversas e na extração de itens de ação. \
Por favor, revise o texto e identifique quaisquer tarefas, atribuições ou ações que \
foram acordadas ou mencionadas como necessárias. Podem ser tarefas atribuídas a \
indivíduos específicos ou ações gerais que o grupo decidiu realizar. Liste esses itens \
de ação de forma clara e concisa."
},
{
"role": "user",
"content": transcription
}
]
)
return response['choices'][0]['message']['content']
# Análise de sentimentos: https://platform.openai.com/docs/tutorials/meeting-minutes/sentiment-analysis
def sentiment_analysis(transcription):
response = openai.ChatCompletion.create(
model="gpt-4",
temperature=0,
messages=[
{
"role": "system",
"content": "Como uma IA com experiência em análise de linguagem e emoções, sua tarefa é analisar \
o sentimento do texto a seguir. Por favor, considere o tom geral da discussão, a emoção \
transmitida pela linguagem utilizada e o contexto em que as palavras e frases são usadas. \
Indique se o sentimento é geralmente positivo, negativo ou neutro e forneça breves explicações \
para a sua análise sempre que possível."
},
{
"role": "user",
"content": transcription
}
]
)
return response['choices'][0]['message']['content']
# Exportando atas de reunião: https://platform.openai.com/docs/tutorials/meeting-minutes/exporting-meeting-minutes
def save_as_docx(minutes, filename):
doc = Document()
for key, value in minutes.items():
# Substitua os sublinhados por espaços e coloque cada palavra do título em maiúscula:
heading = ' '.join(word.capitalize() for word in key.split('_'))
doc.add_heading(heading, level=1)
doc.add_paragraph(value)
# Add a line break between sections
doc.add_paragraph()
doc.save(filename)
# Summarizing and analyzing the transcript with GPT-4
def meeting_minutes(transcription):
logging.info(f"*** Realizando o Resumo Abstrato ✍🏻 ... ***")
abstract_summary = abstract_summary_extraction(transcription)
logging.info(f"*** Realizando a extração de Pontos Chaves 🔑 ... ***")
key_points = key_points_extraction(transcription)
logging.info(f"*** Realizando a extração de Itens de Ação ✅ ... ***")
action_items = action_item_extraction(transcription)
logging.info(f"*** Realizando a Análise de Sentimento 🫀 ... ***")
sentiment = sentiment_analysis(transcription)
return {
'Resumo Abstrato': abstract_summary,
'Pontos Chave': key_points,
'Itens de Ação': action_items,
'Sentimento': sentiment
}
if __name__ == "__main__":
logging.info(f"*** Transcrevendo o áudio: Inglês para Português ... ***")
translate_en_pt = transcribe_audio("/home/eddygiusepe/1_Eddy_Giusepe/6_REPO_HuggingFace/9_Using_Whisper_API_Speech-to-Text_with_OpenAI/output.wav")
print("🔊🔊🔊 -->", translate_en_pt)
print("")
audio_file_path = "/home/eddygiusepe/1_Eddy_Giusepe/6_REPO_HuggingFace/9_Using_Whisper_API_Speech-to-Text_with_OpenAI/output.wav"
transcription = transcribe_audio(audio_file_path)
minutes = meeting_minutes(transcription)
logging.info(f"*** Printando nosso resultado 🤗 ... ***")
print(minutes)
save_as_docx(minutes, 'Doc_description.docx')
|