■■事象
Python環境でGCP Speech to text を使用して話者分離を実装しています。
具体的な実現方法として、Google Cloud Storage ファイルを使用してテキスト化を実現しています。
しかし、下記のpython実行コードを実行してもテキスト化はされますが、話者分離はされません。
尚、Beta版のライブラリのインポート、RecognitionConfig内の話者分離のtrue(下記コード)の指定は記述しており、
実行結果にエラーコードは出力されていません。
from google.cloud import speech_v1p1beta1 as speech
config = speech.RecognitionConfig( encoding=speech.RecognitionConfig.AudioEncoding.FLAC, sample_rate_hertz=rate, language_code="ja-JP", enable_speaker_diarization=True, diarization_speaker_count=2, )
この事象に対し、話者分離の方法を教えて頂きたいです。
よろしくお願いいたします。
(下記python実行ファイル)
python
1#coding:utf8 2import sys 3#from google.cloud import speech 4#from google.cloud import speech_v1 as speech 5from google.cloud import speech_v1p1beta1 as speech 6from google.cloud import storage as gcs 7from mutagen.flac import FLAC 8from pydub import AudioSegment 9import magic 10 11filename = sys.argv[1] 12bucketname = 'bucketname1' 13 14#gcsからデータをダウンロード 15client = gcs.Client() 16bucket = client.get_bucket(bucketname) 17blob = gcs.Blob(filename, bucket) 18content = blob.download_as_string() 19 20#ダウンロードした音声データからencoding、rate、lengthの情報を取得 21mime = magic.Magic(mime=True).from_buffer(content) 22if mime == 'audio/x-wav' and '.wav' in filename: 23 encoding = 'LINEAR16' 24 sound = AudioSegment(content) 25 if sound.channels != 1: 26 print('Must use single channel (mono) audio') 27 sys.exit() 28 rate = sound.frame_rate 29 length = sound.duration_seconds 30elif mime == 'audio/x-flac' and '.flac' in filename: 31 encoding = 'FLAC' 32 with open(filename, 'wb') as f: 33 f.write(content) 34 f.close() 35 sound = FLAC(filename).info 36 if sound.channels != 1: 37 print('Must use single channel (mono) audio') 38 sys.exit() 39 rate = sound.sample_rate 40 length = sound.length 41else: 42 print('Acceptable type is only "wav" or "flac".') 43 sys.exit() 44 45print('\n-*- audio info -*-') 46print('filename : ' + filename) 47print('mimetype : ' + mime) 48print('sampleRate : ' + str(rate)) 49print('playtime : ' + str(length) + 's') 50print('\nWaiting for operation to complete...') 51 52client = speech.SpeechClient() 53 54audio = {'uri':'gs://' + bucketname + '/' + filename} 55config = speech.RecognitionConfig( 56 encoding=speech.RecognitionConfig.AudioEncoding.FLAC, 57 sample_rate_hertz=rate, 58 language_code="ja-JP", 59 enable_speaker_diarization=True, 60 diarization_speaker_count=2, 61) 62 63if length < 60: 64#再生時間が1分未満の場合 65 response = client.recognize(config=config, audio=audio) 66else: 67#再生時間が1分以上の場合 68 #operation = client.long_running_recognize(config, audio) 69 operation = client.long_running_recognize(config=config, audio=audio) 70 response = operation.result(timeout=length) 71 72print('\n-*- transcribe result -*-') 73 74#結果をコンソール出力 75for index, item in enumerate(response.results): 76 print('[%d]Transcript >>>' % (index + 1), item.alternatives[0].transcript) 77 print('[%d]Confidence >>>' % (index + 1), item.alternatives[0].confidence)
■■参考資料
【Python】Google Cloud Speech-to-Text APIの2種類のライブラリを使い比べてみた
https://qiita.com/r-wakatsuki/items/d867bfb80afc24d96de5
Cloud Speech-to-Text 公式リファレンス
https://cloud.google.com/speech-to-text/docs/how-to?hl=ja
あなたの回答
tips
プレビュー