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')