さまざまな音声への対応

Pythonで学ぶ音声言語処理

Daniel Bourke

Machine Learning Engineer/YouTube Creator

言語はどれ?

# 認識器クラスを作成
recognizer = sr.Recognizer()

# 日本語音声を recognize_google に渡す text = recognizer.recognize_google(japanese_good_morning, language="en-US")
# テキストを出力 print(text)
Ohio gozaimasu
Pythonで学ぶ音声言語処理

言語はどれ?

# 認識器クラスを作成
recognizer = sr.Recognizer()

# 日本語音声を recognize_google に渡す text = recognizer.recognize_google(japanese_good_morning, language="ja")
# テキストを出力 print(text)
おはようございます
Pythonで学ぶ音声言語処理

音声以外

# ヒョウの鳴き声の音声を読み込む
leopard_roar = sr.AudioFile("leopard_roar.wav")

# AudioFile を AudioData に変換 with leopard_roar as source: leopard_roar_audio = recognizer.record(source)
# AudioData を認識 recognizer.recognize_google(leopard_roar_audio)
UnknownValueError:
Pythonで学ぶ音声言語処理

音声以外

# ヒョウの鳴き声の音声を読み込む
leopard_roar = sr.AudioFile("leopard_roar.wav")

# AudioFile を AudioData に変換 with leopard_roar as source: leopard_roar_audio = recognizer.record(source)
# show_all を有効にして認識 recognizer.recognize_google(leopard_roar_audio, show_all=True)
[]
Pythonで学ぶ音声言語処理

すべて表示

# 日本語音声を show_all=True で認識
text = recognizer.recognize_google(japanese_good_morning, 
                                   language="en-US",
                                   show_all=True)
# テキストを出力
print(text)
{'alternative': [{'transcript': 'Ohio gozaimasu', 'confidence': 0.89041114},
  {'transcript': 'all hail gozaimasu'},
  {'transcript': 'ohayo gozaimasu'},
  {'transcript': 'olho gozaimasu'},
  {'transcript': 'all Hale gozaimasu'}],
 'final': True}
Pythonで学ぶ音声言語処理

複数話者

# 複数話者の音声ファイルを読み込む
multiple_speakers = sr.AudioFile("multiple-speakers.wav")

# AudioFile を AudioData に変換 with multiple_speakers as source: multiple_speakers_audio = recognizer.record(source)
# AudioData を認識 recognizer.recognize_google(multiple_speakers_audio)
SpeechRecognition ライブラリの制限の一つは、
話者や声の違いを識別せず、すべてを一つのテキストとして返すことです。
Pythonで学ぶ音声言語処理

複数話者

# 音声ファイルを個別に読み込む
speakers = [sr.AudioFile("s0.wav"), sr.AudioFile("s1.wav"), sr.AudioFile("s2.wav")]

# 各話者を個別に書き起こす for i, speaker in enumerate(speakers): with speaker as source: speaker_audio = recognizer.record(source) print(f"Text from speaker {i}: {recognizer.recognize_google(speaker_audio)}")
Text from speaker 0: one of the limitations of the speech recognition library
Text from speaker 1: is that it doesn't recognise different speakers and voices
Text from speaker 2: it will just return it all as one block a text
Pythonで学ぶ音声言語処理

雑音のある音声

  • あなたが聞き取りにくい音声は、API でも困難です
# 背景雑音のある音声を読み込む
noisy_support_call = sr.AudioFile(noisy_support_call.wav)

with noisy_support_call as source: # 周囲雑音を補正して録音 recognizer.adjust_for_ambient_noise(source, duration=0.5) noisy_support_call_audio = recognizer.record(source)
# 音声を認識 recognizer.recognize_google(noisy_support_call_audio)
hello ID like to get some help setting up my calories
Pythonで学ぶ音声言語処理

Passons à la pratique !

Pythonで学ぶ音声言語処理

Preparing Video For Download...