Created
September 21, 2021 00:57
-
-
Save Leticia-Carraro/b2af41b077823876bc786b0e9eabd418 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def google_transcribe(filepath, nome_arquivo_audio, nome_bucket): | |
'''Aqui estamos pegando o arquivo de áudio em determinada localização, note que o áudio | |
está em um árquivo local''' | |
nome_arquivo= filepath + nome_arquivo_audio | |
'''Agora vamos usar a função que já fizemos para determinar a taxa de quadros (frame_rate) e | |
quantidade de canais(channels) que o nosso áudio possui. | |
Vale o lembrete que as boas práticas ditam que a taxa de quadros deve ser maior que 16000HZ | |
e que o áudio deve possuir apenas um canal(mono audio)''' | |
frame_rate, channels = taxa_de_quadros(nome_arquivo) | |
if channels > 1: | |
stereo_para_mono(file_name) | |
#vamos definir os parametros para podermos usar o bucket | |
bucket_name = nome_bucket | |
source_file_name = filepath + nome_arquivo_audio | |
destination_blob_name = nome_arquivo_audio | |
#Definidos, vamos upar o nosso arquivo no bucket | |
upload_blob(bucket_name, source_file_name, destination_blob_name) | |
#Nessa parte estamos apenas colocando o nome do bucket no padrão certinho | |
gcs_uri = 'gs://' + bucketname + '/' + audio_file_name | |
#iniciamos o transcript como vazio, é aqui que vamos colocar nosso texto processado do áudio | |
transcript = '' | |
'''Esssa parte é a inicialização da API. Nela indicamos que queremos fazer um processamento de | |
áudio, mais precisamente estamos abrido uma solicitação de speech-to-text, e estamos passando | |
a localização do áudio através do bucket. Note que essa parte assume que o usuário já está autenticado''' | |
client = speech.SpeechClient() | |
audio = speech.RecognitionAudio(uri=gcs_uri) | |
#Aqui temos as configurações para o processamento do áudio | |
config = speech.RecognitionConfig( | |
encoding= speech.RecognitionConfig.AudioEncoding.LINEAR16, #selecionando a codificação Linear16 | |
sample_rate_hertz=frame_rate, #Utilizando o frame rate que calculamos | |
language_code='pt-BR') #Transcrevendo áudios em português | |
'''Caso quisessemos colocar parâmetros opcionais, como profanity_filter, colocariamos | |
dentro do RecognitionConfig ''' | |
'''Esssa parte detecta o discurso em longos áudios, passamos as configurações que queremos ter, | |
definidas anteriormente e o áudio, também definido anteriormente.''' | |
operation = client.long_running_recognize(config=config, audio=audio) | |
response = operation.result(timeout=10000) | |
'''Aqui estamos propriamente escrevendo os resultados obtidos na váriavel transcript que criamos''' | |
for result in response.results: | |
transcript += result.alternatives[0].transcript | |
#não podemos esquecer de limpar o que fizemos | |
delete_blob(bucket_name, destination_blob_name) | |
#e por fim, é devolvida a transcrição de áudio | |
return transcript |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment