[PYTHON] Transcrire des fichiers WAV avec l'API Cloud Speech

Objectif

** Comment transcrire l'audio d'un fichier WAV avec l'API Google Cloud Speech-to-Text **. [Article sur la transcription d'un fichier FLAC](https://qiita.com/knyrc/items/ 7aab521edfc9bfb06625) a été utilisé comme référence pour transcrire le fichier WAV. Avec cette méthode, vous pouvez transcrire ** sans convertir au format FLAC.

Cliquez ici pour le code

[Important] Préparation du fichier WAV

** Étant donné que l'API Cloud Speech-to-Text obtient les informations requises pour la transcription à partir des informations d'en-tête du fichier WAV **, il est nécessaire de confirmer à l'avance si l'en-tête du fichier WAV à convertir en voix est normal. Les informations à confirmer dans les informations d'en-tête sont ** s'il s'agit de PCM (fmt_wave_format_type) et de fréquence d'échantillonnage (fmt_samples_per_sec) **.

Si vous souhaitez vérifier les spécifications de l'API Cloud Speech-to-Text, cliquez sur [Recognition Config](https://cloud.google.com/speech-to-text/docs/reference/rpc/google.cloud.speech.v1] dans VS Code. Veuillez accéder à la source de la définition (# google.cloud.speech.v1.RecognitionConfig).

Vérifier l'en-tête du fichier WAV

Vérifiez les informations d'en-tête en exécutant le programme écrit dans Article sur la lecture des informations d'en-tête du fichier WAVE avec Python.

Fichier WAV normal

--fmt_samples_per_sec: 8000-48000 (16000 est le meilleur) --fmt_wave_format_type: 1 (pointe vers PCM)

Exemple de fichier WAV incorrect

Si le fichier WAV est dans un mauvais format

Reportez-vous à ici et ** Exportez le fichier WAV à l'aide de l'application "Musique" par défaut de Mac ** Ça a marché!

** [Attention] Les fichiers WAV exportés avec iMovie et les fichiers WAV édités avec QuickTime Player n'ont pas pu être déplacés car les en-têtes ne sont pas normaux! ** **

Création d'une clé de compte de service

En gros, reportez-vous à Article sur la transcription des fichiers FLAC et créez une ** clé json **.

** [Attention] Cette fois, le fichier WAV téléversé sur Google Cloud Storage sera transcrit, il est donc nécessaire d'accorder l'accès Cloud Storage au compte de service. **

Ajoutez un visualiseur d'objets de stockage à votre rôle. スクリーンショット 2020-10-22 0.28.11.png

Si vous utilisez un compte de service auquel vous n'avez pas accès à Cloud Storage, vous devriez vous mettre en colère:

PermissionDenied: 403 hogehoge does not have storage.objects.get access to the Google Cloud Storage object.

Définir le chemin de la clé du compte de service sur une variable d'environnement

Définissez le chemin du fichier json que vous avez téléchargé précédemment dans la variable d'environnement.

export GOOGLE_APPLICATION_CREDENTIALS=./hoge.json

Télécharger le fichier WAV sur Cloud Storage

Veuillez vous reporter à Article sur la transcription d'un fichier FLAC et télécharger le fichier WAV sur Cloud Storage. Si vous regardez l'écran des détails de l'objet, gs Vous pouvez voir le chemin du fichier vers la ressource dans Cloud Storage en commençant par.

Script de transcription

Je l'ai créé en me référant à Article sur la transcription des fichiers FLAC.

transcribe.py


# # !/usr/bin/env python
# coding: utf-8
import argparse
import datetime


def transcribe(gcs_uri):
    from google.cloud import speech_v1 as speech
    from google.cloud.speech_v1 import types
    client = speech.SpeechClient()
    audio = types.RecognitionAudio(uri=gcs_uri)
    #Puisqu'il est écrit dans l'en-tête du fichier audio, il n'est pas nécessaire de spécifier la fréquence d'échantillonnage.
    config = types.RecognitionConfig(language_code='ja-JP')
    operation = client.long_running_recognize(config, audio)

    operationResult = operation.result()
    now = datetime.datetime.now()
    print('Waiting for operation to complete...')

    with open('./{}.txt'.format(now.strftime("%Y%m%d-%H%M%S")), mode='w') as f:
        for result in operationResult.results:
            print("Transcript: {}".format(result.alternatives[0].transcript))
            print("Confidence: {}".format(result.alternatives[0].confidence))
            f.write('{}\n'.format(result.alternatives[0].transcript))


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument(
        'path', help='cloud storage path start with gs://')
    args = parser.parse_args()
    transcribe(args.path)

Exécution du script de transcription

Spécifiez le chemin du fichier vers la ressource dans Cloud Storage en commençant par gs: // dans l'argument et exécutez le script.

python transcribe.py gs://hogehoge.wav

résultat

Le résultat est une sortie standard et un fichier texte.

Transcript:Si vous pouvez vous inscrire
Confidence: 0.8765763640403748
Transcript:Je pense que c'est mieux d'être là
Confidence: 0.8419854640960693

20201022-010101.txt


Si vous pouvez vous inscrire
Je pense que c'est mieux d'être là

référence

Recommended Posts

Transcrire des fichiers WAV avec l'API Cloud Speech
Reconnaissance vocale des fichiers wav avec Google Cloud Speech API Beta
API Google Cloud Speech et Amazon Transcribe
Reconnaissance vocale en streaming avec l'API Google Cloud Speech
Transcription vocale automatique avec l'API Google Cloud Speech
[Python] Fichiers wav POST avec requêtes [POST]
Procédure de transcription vocale à l'aide de l'API Google Cloud Speech
Problèmes avec les résultats de sortie avec l'API Cloud Vision de Google
Extraction de texte avec l'API GCP Cloud Vision (Python3.6)
Lire les fichiers wav avec uniquement le package standard Python
Procédure de transcription vocale à l'aide de Python et de l'API Google Cloud Speech
Télécharger des fichiers avec Django
Extruder avec l'API Fusion360
Nuage de points avec du poivre
API Nifty Cloud facile à utiliser avec botocore et python
Flux d'extraction de texte au format PDF avec l'API Cloud Vision
Comment télécharger des fichiers sur Cloud Storage avec le SDK Python de Firebase
Importez et supprimez des fichiers dans Google Cloud Storages avec django-storage