Python 通过谷歌云语音API获取每个转录单词的时间戳?
我希望通过谷歌云语音API转录音频文件。这个简单的脚本将wav作为输入,并以相当高的精度对其进行转录Python 通过谷歌云语音API获取每个转录单词的时间戳?,python,audio,google-cloud-platform,speech-to-text,google-speech-api,Python,Audio,Google Cloud Platform,Speech To Text,Google Speech Api,我希望通过谷歌云语音API转录音频文件。这个简单的脚本将wav作为输入,并以相当高的精度对其进行转录 import os import sys import speech_recognition as sr with open("~/Documents/speech-to-text/speech2textgoogleapi.json") as f: GOOGLE_CLOUD_SPEECH_CREDENTIALS = f.read() name = sys.argv[1] # wav fil
import os
import sys
import speech_recognition as sr
with open("~/Documents/speech-to-text/speech2textgoogleapi.json") as f:
GOOGLE_CLOUD_SPEECH_CREDENTIALS = f.read()
name = sys.argv[1] # wav file
r = sr.Recognizer()
all_text = []
with sr.AudioFile(name) as source:
audio = r.record(source)
# Transcribe audio file
text = r.recognize_google_cloud(audio, credentials_json=GOOGLE_CLOUD_SPEECH_CREDENTIALS)
all_text.append(text)
with open("~/Documents/speech-to-text/transcript.txt", "w") as f:
f.write(str(all_text))
如何使用API从语音音频中提取其他有意义的信息?具体地说,我希望为每个单词获得一个时间戳,但其他信息(如音调、振幅、说话人识别等)将非常受欢迎。提前谢谢 实际上,在中的语音API中有一个关于如何执行此操作的示例 : 值可以包含在响应文本中 谢谢你的请求。时间偏移值显示开始和结束时间 在提供的音频中识别的每个口语单词的结尾。A. 时间偏移值表示从开始经过的时间量 音频的开始,以100ms为增量 时间偏移对于分析较长的音频文件特别有用, 您可能需要在已识别的文档中搜索特定单词 文本并在原始音频中找到它(查找)。时间偏移是 支持我们所有的识别方法:识别, StreamingRecognite和LongRunningRecognite。请参见下面的示例 龙润宁的认识 这是Python的代码示例:
def transcribe_gcs_with_word_time_offsets(gcs_uri):
"""Transcribe the given audio file asynchronously and output the word time
offsets."""
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types
client = speech.SpeechClient()
audio = types.RecognitionAudio(uri=gcs_uri)
config = types.RecognitionConfig(
encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
sample_rate_hertz=16000,
language_code='en-US',
enable_word_time_offsets=True)
operation = client.long_running_recognize(config, audio)
print('Waiting for operation to complete...')
result = operation.result(timeout=90)
for result in result.results:
alternative = result.alternatives[0]
print('Transcript: {}'.format(alternative.transcript))
print('Confidence: {}'.format(alternative.confidence))
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))
希望这有帮助