Skip to content

Instantly share code, notes, and snippets.

@Leticia-Carraro
Created September 21, 2021 00:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Leticia-Carraro/b2af41b077823876bc786b0e9eabd418 to your computer and use it in GitHub Desktop.
Save Leticia-Carraro/b2af41b077823876bc786b0e9eabd418 to your computer and use it in GitHub Desktop.
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