1,335
社区成员




"我的NVIDIA开发者之旅” | 征文活动进行中.......
ASR 将音频流或音频缓冲区作为输入,并返回一个或多个文本副本,以及其他可选元数据。Riva 中的语音识别是一种 GPU 加速的计算管道,具有优化的性能和准确性。
Riva 为多种语言(如英语、西班牙语、德语、俄语和普通话)提供最先进的 OOTB(开箱即用)模型和管道,可以使用 Riva 快速启动脚本轻松部署。Riva 还支持以各种方式轻松定制 ASR 管道,以满足您的特定需求。
有关详细信息,请参阅Riva ASR 文档。
现在,让我们使用 Riva API 为一些示例音频剪辑生成脚本,使用 OOTB 管道,从英语开始。
启动 Riva Speech Skills 服务器。
在运行本教程之前,按照Riva 快速入门指南中的说明在Riva Speech Skills 服务器上部署 OOTB ASR 模型。默认情况下,仅部署英文模型。
安装 Riva 客户端库。
按照 Riva Client 的要求和设置中的步骤安装 Riva Client 库。
让我们导入一些必需的库,包括 Riva Client 库。
import io
import IPython.display as ipd
import grpc
import riva_api.riva_asr_pb2 as rasr
import riva_api.riva_asr_pb2_grpc as rasr_srv
import riva_api.riva_audio_pb2 as ra
以下 URI 假设 Riva Speech API 服务器的本地部署在默认端口上。如果服务器部署在不同的主机上或通过 Kubernetes 上的 Helm 图表,请使用适当的 URI。
channel = grpc.insecure_channel('localhost:50051')
riva_asr = rasr_srv.RivaSpeechRecognitionStub(channel)
您可以在流媒体模式或离线模式下使用 Riva ASR。在流式传输模式下,会捕获并识别连续的音频流,从而生成转录文本流。在离线模式下,设定长度的音频剪辑被转录为文本。
让我们看一个显示英语离线 ASR API 用法的示例:
向 Riva Speech API 服务器发出 gRPC 请求
Riva ASR API 支持.wav
脉冲编码调制 (PCM) 格式的文件;包括.alaw
, .mulaw
, 和.flac
单通道格式。
现在,让我们使用.wav
离线模式下的示例文件向 Riva Speech 服务器发出 gRPC 请求以进行 ASR。首先加载音频。
# This example uses a .wav file with LINEAR_PCM encoding.
# read in an audio file from local disk
path = "./audio_samples/en-US_sample.wav"
with io.open(path, 'rb') as fh:
content = fh.read()
ipd.Audio(path)
接下来,创建一个音频RecognizeRequest
对象,根据需要设置配置参数。
# Set up an offline/batch recognition request
req = rasr.RecognizeRequest()
req.audio = content # raw bytes
#req.config.encoding = ra.AudioEncoding.LINEAR_PCM # Audio encoding can be detected from wav
#req.config.sample_rate_hertz = 0 # Sample rate can be detected from wav and resampled if needed
req.config.language_code = "en-US" # Language code of the audio clip
req.config.max_alternatives = 1 # How many top-N hypotheses to return
req.config.enable_automatic_punctuation = True # Add punctuation when end of VAD detected
req.config.audio_channel_count = 1 # Mono channel
最后,向服务器提交请求。
response = riva_asr.Recognize(req)
asr_best_transcript = response.results[0].alternatives[0].transcript
print("ASR Transcript:", asr_best_transcript)
print("\n\nFull Response Message:")
print(response)
ASR Transcript: What is natural language processing?
Full Response Message:
results {
alternatives {
transcript: "What is natural language processing? "
confidence: 1.0
}
channel_tag: 1
audio_processed: 4.1519999504089355
}
Riva ASR 在向 gRPC 端点发出转录请求时支持许多选项,如上一节所示。让我们进一步了解这些参数:
encoding
- 输入音频文件的音频编码类型。支持 ( LINEAR_PCM
, FLAC
,MULAW
或ALAW
)。可以从音频文件中检测到
sample_rate_hertz
- 可以从音频.wav
文件中检测采样率,并在需要时重新采样。
language_code
- 输入音频的语言。“en-US”代表英语(美国)。其他选项包括 ( es-US
, de-DE
, ru-RU
, zh-CN
)。我们将在下一节探讨非英语语言的 ASR。
enable_automatic_punctuation
- 在 VAD(语音活动检测)末尾添加标点符号。
audio_channel_count
- 音频通道数。典型的麦克风有 1 个音频通道。
很不错的内容,干货满满,已支持师傅,期望师傅能输出更多干货,并强烈给师傅五星好评
另外,如果可以的话,期待师傅能给正在参加年度博客之星评选的我一个五星好评,您的五星好评都是对我的支持与鼓励(帖子中有大额红包惊喜哟,不要忘记评了五星后领红包哟)
⭐ ⭐ ⭐ ⭐ ⭐ 博主信息⭐ ⭐ ⭐ ⭐ ⭐
博主:橙留香Park
本人原力等级:5
链接直达:https://bbs.csdn.net/topics/611387568
微信直达:Blue_Team_Park
⭐ ⭐ ⭐ ⭐ ⭐ 五星必回!!!⭐ ⭐ ⭐ ⭐ ⭐
点赞五星好评回馈小福利:抽奖赠书 | 总价值200元,书由君自行挑选(从此页面参与抽奖的同学,只需五星好评后,参与抽奖)