Voz a texto en la nube de Google en Python: ahorre traducción y tiempo en JSON

tmo

Estoy usando la solución estándar para procesar voz a texto con marcas de tiempo (ver código a continuación). Sé por esta publicación que es posible agregar argumentos a la herramienta de línea de comandos de gcloud, como --format=json.

Pregunta general : ¿Cómo los especifico google.cloud.speech? Parece que no puedo encontrar ninguna documentación en el sitio de Google sobre cómo hacer esto con Python.

Pregunta específica : Mi objetivo en este momento es escribir un archivo JSON estilo diccionario que contenga entradas para todas las palabras, además de su hora de inicio y finalización por palabra. Me doy cuenta de que escribo en la nube una solución pirata, pero si ya existe una opción, sería preferible.

Codigo :

def transcribe_file_with_word_time_offsets(speech_file, language):
    """Transcribe the given audio file synchronously and output the word time
    offsets."""
    print("Start")

    from google.cloud import speech
    from google.cloud.speech import enums
    from google.cloud.speech import types

    print("checking credentials")

    client = speech.SpeechClient(credentials=credentials)

    print("Checked")
    with io.open(speech_file, 'rb') as audio_file:
        content = audio_file.read()


    print("audio file read")

    audio = types.RecognitionAudio(content=content)

    print("config start")
    config = types.RecognitionConfig(
            encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
            language_code=language,
            enable_word_time_offsets=True)

    print("Recognizing:")
    response = client.recognize(config, audio)
    print("Recognized")

    for result in response.results:
        alternative = result.alternatives[0]
        print('Transcript: {}'.format(alternative.transcript))

        for word_info in alternative.words:
            word = word_info.word
            start_time = word_info.start_time
            end_time = word_info.end_time
            print('Word: {}, start_time: {}, end_time: {}'.format(
                word,
                start_time.seconds + start_time.nanos * 1e-9,
                end_time.seconds + end_time.nanos * 1e-9))

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument(dest='path', help='Audio file to be recognized')
    args = parser.parse_args()
    transcribe_file_with_word_time_offsets(args.path, 'en-US')

Y aquí está la solución hacky:

...
    transcript_dict = {'Word':[], 'start_time': [], 'end_time':[]}

    for result in response.results:
        alternative = result.alternatives[0]
        print('Transcript: {}'.format(alternative.transcript))

        for word_info in alternative.words:
            word = word_info.word
            start_time = word_info.start_time
            end_time = word_info.end_time
            transcript_dict['Word'].append(word)
            transcript_dict['start_time'].append(
                start_time.seconds + start_time.nanos * 1e-9)
            transcript_dict['end_time'].append(
                end_time.seconds + end_time.nanos * 1e-9)

    print(transcript_dict)
...
Ana

Las soluciones que se usan protobufen la pregunta vinculada no funcionaron para mí (noviembre de 2020), pero me llevaron a este comentario , que funcionó para mí con la API de Speech:

speech.types.RecognizeResponse.to_json(response)

# alternatively
type(response).to_json(response)

Ejemplo

from google.cloud import speech_v1 as speech


def transcribe_gcs(gcs_uri):
    client = speech.SpeechClient()

    audio = speech.RecognitionAudio(uri=gcs_uri)
    config = speech.RecognitionConfig(
        language_code="en-US",
    )

    return client.recognize(config=config, audio=audio)


sample_audio_uri = "gs://cloud-samples-tests/speech/brooklyn.flac"

response = transcribe_gcs(sample_audio_uri)
response_json = type(response).to_json(response)


print(response_json)
{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98314303,
          "words": []
        }
      ],
      "channelTag": 0
    }
  ]
}

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Excepción de la API de voz en la nube de Google en el error de solicitud de voz

¿Qué API de Google Cloud debo abrir para la autenticación, el servicio de base de datos en tiempo real de Firebase y la API de voz a texto?

Exportar el resultado de la API de voz en la nube a un archivo JSON usando Python

Exportar el resultado de la API de voz en la nube a un archivo JSON usando Python

Exportar el resultado de la API de voz en la nube a un archivo JSON usando Python

Exportar el resultado de la API de voz en la nube a un archivo JSON usando Python

cómo seleccionar la cuenta de servicio json en las credenciales de la aplicación de Google API de voz a texto en la nube, Fecha límite Excedida: 504 Excedida la fecha límite

Problemas con la conversión de voz a texto en Python

¿Cómo puedo hacer la detección de actividad de voz en tiempo real en Python?

Ahorre solo tiempo en rieles

Ahorre solo tiempo en rieles

API de voz en la nube de Google arroja 403 cuando intenta usarlo

tiempo de espera del motor de computación en la nube de Google

¿Cómo pasar el formato a la API de traducción en la nube de Google utilizando la biblioteca cliente?

¿Cómo traducir dinámicamente en tiempo real usando la API de traducción de Google?

Autenticación de Google en Android con Firebase y varios proyectos en la nube

Shiny Watson texto a voz en tiempo real

Cree temas y suscriptores masivos en la nube de Google

Función de implementación en la nube de Google con "permitir no autenticado" en python

¿Es posible la funcionalidad de voz a texto y el análisis de voz en ios 8 y superior?

Texto a voz: Google Maps y marcadores en Android Studio

Cómo hacer que la URL de carga de almacenamiento en la nube de Google funcione solo una vez con HTTP PUT y caduque en un tiempo determinado

Nueva aplicación de Google Play y mensajería en la nube de Firebase

Implementación de ruby en la nube de Google y ruby-docker

límite superior y límite de tiempo de las funciones en la nube de firebase

¿Qué tan seguro es usar el proxy en la nube para la conexión entre la VM y la instancia Paas en la nube de Google?

¿Es posible transmitir datos (Cargar) para almacenar en un depósito de almacenamiento en la nube de Google y permitir la descarga al mismo tiempo?

Mensaje y notificación en la nube de Flutter

Subir un JSON al almacenamiento en la nube de Google a través de Python