在 WAV 文件上使用 Speech-to-Text API 的空响应
Empty response using Speech-to-Text API on WAV file
我有一个使用 WebRTC 从流生成的 WAV 文件。示例演示 here 能够用结果转录它,但我的代码没有这样做,因为我得到的是一个空响应。这是我的配置:
audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.OGG_OPUS,
sample_rate_hertz=48000,
language_code="es-US",
audio_channel_count=2,
enable_separate_recognition_per_channel=True,
use_enhanced=True,
model="command_and_search"
)
我使用您提供的配置测试了您的文件,结果也为空白。我不确定 Try it demo 后端的 API 使用什么代码或版本可以让您的音频文件无缝工作。但作为解决方法,我所做的是将您的文件转换为 FLAC 并且它起作用了。
为了转换文件,我使用了 FFMPEG。您可以使用任何您拥有的音频转换器工具,只要它能正确地将其转换为 FLAC。见命令:
ffmpeg -i hola.wav hola.flac
使用转换后的文件,我将配置中的音频编码更改为 flac,效果很好。请参阅下面的代码:
def transcribe_file(speech_file):
from google.cloud import speech
import io
client = speech.SpeechClient()
with io.open(speech_file, "rb") as audio_file:
content = audio_file.read()
audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.FLAC,
sample_rate_hertz=48000,
audio_channel_count=2,
language_code="en-US",
model="command_and_search"
)
response = client.recognize(config=config, audio=audio)
print(response)
for result in response.results:
print(u"Transcript: {}".format(result.alternatives[0].transcript))
transcribe_file("./hola.flac")
输出:
也供参考,当遇到空结果并且您已尝试optimize the audio (split into mono) and still fails. Try converting the file to FLAC as suggested by troubleshooting docs。
我有一个使用 WebRTC 从流生成的 WAV 文件。示例演示 here 能够用结果转录它,但我的代码没有这样做,因为我得到的是一个空响应。这是我的配置:
audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.OGG_OPUS,
sample_rate_hertz=48000,
language_code="es-US",
audio_channel_count=2,
enable_separate_recognition_per_channel=True,
use_enhanced=True,
model="command_and_search"
)
我使用您提供的配置测试了您的文件,结果也为空白。我不确定 Try it demo 后端的 API 使用什么代码或版本可以让您的音频文件无缝工作。但作为解决方法,我所做的是将您的文件转换为 FLAC 并且它起作用了。
为了转换文件,我使用了 FFMPEG。您可以使用任何您拥有的音频转换器工具,只要它能正确地将其转换为 FLAC。见命令:
ffmpeg -i hola.wav hola.flac
使用转换后的文件,我将配置中的音频编码更改为 flac,效果很好。请参阅下面的代码:
def transcribe_file(speech_file):
from google.cloud import speech
import io
client = speech.SpeechClient()
with io.open(speech_file, "rb") as audio_file:
content = audio_file.read()
audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.FLAC,
sample_rate_hertz=48000,
audio_channel_count=2,
language_code="en-US",
model="command_and_search"
)
response = client.recognize(config=config, audio=audio)
print(response)
for result in response.results:
print(u"Transcript: {}".format(result.alternatives[0].transcript))
transcribe_file("./hola.flac")
输出:
也供参考,当遇到空结果并且您已尝试optimize the audio (split into mono) and still fails. Try converting the file to FLAC as suggested by troubleshooting docs。