在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用語音AI開發下一代擴展現實應用程序

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-10-11 11:26 ? 次閱讀

由于身臨其境的體驗,虛擬現實( VR )、增強現實( AR )和混合現實( MR )環境可以感覺到難以置信的真實。在擴展現實( XR )應用程序中添加基于語音的界面可以使其看起來更真實。

想象一下,用你的聲音在一個環境中導航,或者發出口頭命令,然后聽到虛擬實體的回應。

在 XR 環境中利用 speech AI 的可能性非常誘人。語音人工智能技能,如自動語音識別( ASR )和文本到語音轉換( TTS ),使 XR 應用程序變得有趣、易于使用,并使有語音障礙的用戶更容易使用。

本文介紹了如何在 XR 應用程序中使用語音識別,也稱為語音到文本( STT ),有哪些 ASR 自定義,以及如何開始在 Windows 應用程序中運行 ASR 服務。

為什么要在 XR 應用程序中添加語音 AI 服務?

在當今大多數 XR 體驗中,用戶無法使用鍵盤或鼠標。 VR 游戲控制器通常與虛擬體驗交互的方式既笨拙又不直觀,當您沉浸在環境中時,很難通過菜單進行導航。

當我們沉浸在虛擬世界中時,我們希望我們的體驗感覺自然,無論是我們如何感知它,還是我們如何與它互動。言語是我們在現實世界中最常見的交流方式之一。

在 XR 應用程序中添加支持語音 AI 的語音命令和響應,使交互更加自然,并大大簡化了用戶的學習曲線。

支持語音 AI 的 XR 應用程序示例

如今,有各種各樣的可穿戴技術設備,使人們能夠在使用聲音的同時體驗身臨其境的現實:

AR 翻譯眼鏡可以在 AR 中提供實時翻譯,或者只在 AR 中轉錄語音,以幫助有聽力障礙的人。

品牌化語音是為元宇宙中的數字化身定制和開發的,使體驗更加可信和真實。

社交媒體平臺提供語音激活 AR 過濾器,便于搜索和使用。例如, Snapchat 用戶可以使用免提語音掃描功能搜索所需的數字濾波器。

VR 設計審查

虛擬現實可以幫助企業通過自動化汽車行業的許多任務來節省成本,例如汽車建模、裝配工人培訓和駕駛模擬

添加的語音 AI 組件使免提交互成為可能。例如,用戶可以利用 STT 技能向 VR 應用程序發出命令,應用程序可以通過 TTS 以聽起來很人性化的方式響應。

poYBAGNE4lGAIAfSAAFbCywnqTc093.png

圖 1.VR 汽車設計審查工作流架構

如圖 1 所示,用戶向 VR 應用程序發送音頻請求,然后使用 ASR 將其轉換為文本。自然語言理解將文本作為輸入并生成響應,然后使用 TTS 將其反饋給用戶。

開發語音 AI 管道并不像聽起來那么容易。傳統上,在構建管道時,總是要在準確性和實時響應之間進行權衡。

這篇文章只關注 ASR ,我們研究了目前 XR 應用程序開發人員可用的一些定制。我們還討論了使用 GPU 加速語音 AI SDK NVIDIA Riva 構建針對特定用例定制的應用程序,同時提供實時性能。

通過 ASR 定制解決特定領域和語言的挑戰

一個 ASR 管道包括一個特征抽取器、聲學模型、解碼器或語言模型以及標點符號和大寫模型(圖 2 )。

pYYBAGNE4lKASi3ZAAGkUYDXg98467.png

圖 2.ASR 管道

要了解可用的 ASR 定制,掌握端到端流程很重要。首先,進行特征提取,將原始音頻波形轉換為頻譜圖/梅爾頻譜圖。然后將這些頻譜圖輸入聲學模型,該模型生成一個矩陣,其中包含每個時間步長的所有字符的概率。

接下來,解碼器與語言模型一起使用該矩陣作為輸入來生成文本。然后,您可以通過標點符號和大寫模型運行生成的文本,以提高可讀性。

高級語音 AI SDK 和工作流(如 Riva )支持語音識別管道定制。自定義可幫助您解決一些特定于語言的挑戰,例如了解以下一項或多項:

多重口音

單詞語境化

領域專用術語

多種方言

多種語言

噪音環境中的用戶

Riva 中的定制可以應用于訓練和推理階段。從培訓級別定制開始,您可以微調聲學模型、解碼器/語言模型以及標點符號和大寫模型。這可以確保您的管道能夠理解不同的語言、方言、口音和行業特定的行話,并且對噪音具有魯棒性。

當涉及到推理級自定義時,可以使用 word boosting 。通過單詞增強,在解碼聲學模型的輸出時, ASR 管道更可能通過給某些感興趣的單詞更高的分數來識別它們。

開始使用 NVIDIA Riva 為 XR 開發集成 ASR 服務

Riva 作為客戶機 – 服務器模型運行。要運行 Riva ,您需要訪問帶有 NVIDIA GPU 的 Linux 服務器,在那里您可以安裝和運行 Riva 服務器(本文提供了詳細信息和說明)。

Riva 客戶端 API 集成到 Windows 應用程序中。在運行時, Windows 客戶端通過網絡向 Riva 服務器發送 Riva 請求,而[ZDK0 :服務器則發送回復。單個 Riva 服務器可以同時支持多個 Riva 客戶端。

ASR 服務可以在兩種不同的模式下運行:

Offline mode: 捕獲完整的語音段,完成后發送到 Riva 以轉換為文本。

Streaming mode: 語音片段正在實時流式傳輸到 Riva 服務器,文本結果正在實時流回。流模式有點復雜,因為它需要多個線程。

本文稍后將提供兩種模式的示例。

在本節中,您將學習幾種將 Riva 集成到 Windows 應用程序中的方法:

Python ASR 離線客戶端

Python 流式 ASR 客戶端

使用 Docker 的 C ++脫機客戶端

C ++流媒體客戶端

首先,這里介紹了如何設置和運行 Riva 服務器。

先決條件

訪問 NGC 。有關分步說明,請參閱 NGC Getting Started Guide

執行所有步驟,以便能夠從命令行界面( CLI )運行ngc命令。

訪問 NVIDIA Volta 、 NVIDIA -Turing 或基于 A100 GPU 的 NVIDIA 安培架構。帶有 NVIDIA GPU 的 Linux 服務器也可從主要 CSP 獲得。有關更多信息,請參閱 support matrix 。

Docker 安裝,支持 NVIDIA GPU 。

按照說明安裝 NVIDIA Container Toolkit ,然后安裝nvidia-docker軟件包。

服務器設置

通過運行以下命令從 NGC 下載腳本:

ngc registry resource download-version nvidia/riva/riva_quickstart:2.4.0

初始化 Riva 服務器:

bash riva_init.sh

啟動 Riva 服務器:

bash riva_start.sh

運行 Python ASR 脫機客戶端

首先,運行以下命令來安裝riva客戶端軟件包。確保您使用的是 Python 版本 3.7 。

pip install nvidia-riva-client

以下代碼示例以脫機模式運行 ASR 轉錄。您必須更改服務器地址,給出要轉錄的音頻文件的路徑,并選擇語言代碼。目前, Riva 支持英語、西班牙語、德語、俄語和普通話。

import io
import IPython.display as ipd
import grpc

import riva.client

auth = riva.client.Auth(uri='server address:port number')

riva_asr = riva.client.ASRService(auth)

# Supports .wav file in LINEAR_PCM encoding, including .alaw, .mulaw, and .flac formats with single channel
# read in an audio file from local disk
path = "audio file path"
with io.open(path, 'rb') as fh:
    content = fh.read()
ipd.Audio(path)

# Set up an offline/batch recognition request
config = riva.client.RecognitionConfig()
#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
config.language_code = "en-US"                    # Language code of the audio clip
config.max_alternatives = 1                       # How many top-N hypotheses to return
config.enable_automatic_punctuation = True        # Add punctuation when end of VAD detected
config.audio_channel_count = 1                    # Mono channel

response = riva_asr.offline_recognize(content, config)
asr_best_transcript = response.results[0].alternatives[0].transcript
print("ASR Transcript:", asr_best_transcript)

print("\n\nFull Response Message:")
print(response)

運行 Python 流式 ASR 客戶端

要運行 ASR 流客戶端,請克隆riva python-clients存儲庫并運行存儲庫附帶的文件。

要使 ASR 流式處理客戶端在 Windows 上運行,請運行以下命令克隆存儲庫:

git clone  https://github.com/nvidia-riva/python-clients.git 

python-clients/scripts/asr文件夾運行以下命令:

python transcribe_mic.py --server=server address:port number

下面是 transcibe_mic.py :

import argparse

import riva.client
from riva.client.argparse_utils import add_asr_config_argparse_parameters, add_connection_argparse_parameters

import riva.client.audio_io


def parse_args() -> argparse.Namespace:
    default_device_info = riva.client.audio_io.get_default_input_device_info()
    default_device_index = None if default_device_info is None else default_device_info['index']
    parser = argparse.ArgumentParser(
        description="Streaming transcription from microphone via Riva AI Services",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
    )
    parser.add_argument("--input-device", type=int, default=default_device_index, help="An input audio device to use.")
    parser.add_argument("--list-devices", action="store_true", help="List input audio device indices.")
    parser = add_asr_config_argparse_parameters(parser, profanity_filter=True)
    parser = add_connection_argparse_parameters(parser)
    parser.add_argument(
        "--sample-rate-hz",
        type=int,
        help="A number of frames per second in audio streamed from a microphone.",
        default=16000,
    )
    parser.add_argument(
        "--file-streaming-chunk",
        type=int,
        default=1600,
        help="A maximum number of frames in a audio chunk sent to server.",
    )
    args = parser.parse_args()
    return args


def main() -> None:
    args = parse_args()
    if args.list_devices:
        riva.client.audio_io.list_input_devices()
        return
    auth = riva.client.Auth(args.ssl_cert, args.use_ssl, args.server)
    asr_service = riva.client.ASRService(auth)
    config = riva.client.StreamingRecognitionConfig(
        config=riva.client.RecognitionConfig(
            encoding=riva.client.AudioEncoding.LINEAR_PCM,
            language_code=args.language_code,
            max_alternatives=1,
            profanity_filter=args.profanity_filter,
            enable_automatic_punctuation=args.automatic_punctuation,
            verbatim_transcripts=not args.no_verbatim_transcripts,
            sample_rate_hertz=args.sample_rate_hz,
            audio_channel_count=1,
        ),
        interim_results=True,
    )
    riva.client.add_word_boosting_to_config(config, args.boosted_lm_words, args.boosted_lm_score)
    with riva.client.audio_io.MicrophoneStream(
        args.sample_rate_hz,
        args.file_streaming_chunk,
        device=args.input_device,
    ) as audio_chunk_iterator:
        riva.client.print_streaming(
            responses=asr_service.streaming_response_generator(
                audio_chunks=audio_chunk_iterator,
                streaming_config=config,
            ),
            show_intermediate=True,
        )


if __name__ == '__main__':
    main()

使用 Docker 運行 C ++ ASR 脫機客戶端

下面是如何在 C ++中使用 Docker 運行 Riva ASR 脫機客戶端。

通過運行以下命令克隆/ cpp 客戶端 GitHub 存儲庫:

git clone  https://github.com/nvidia-riva/cpp-clients.git 

構建 Docker 映像:

DOCKER_BUILDKIT=1 docker build . –tag riva-client

運行 Docker 映像:

docker run -it --net=host riva-client

啟動 Riva 語音識別客戶端:

Riva_asr_client –riva_url server address:port number –audio_file audio_sample

運行 C ++ ASR 流式處理客戶端

要在 C ++中運行 ASR 流式客戶端riva_asr,必須首先編譯 cpp sample 。在滿足以下依賴項之后,使用 CMake 很簡單:

gflags

glog

grpc

rtaudio

rapidjson

protobuf

grpc_cpp_plugin

在根源文件夾中創建文件夾/build。在終端上,鍵入cmake 。.,然后鍵入make。有關詳細信息,請參閱存儲庫中包含的自述文件。

編譯樣本后,輸入以下命令運行它:

riva_asr.exe --riva_uri={riva server url}:{riva server port} --audio_device={Input device name, e.g. "plughw:PCH,0"}
  • riva_uririva服務器的address:port值。默認情況下,riva服務器偵聽端口 50051 。
  • audio_device:要使用的輸入設備(麥克風)。

該示例實際上實現了四個步驟。這篇文章中只展示了幾個簡短的例子。有關詳細信息,請參閱文件streaming_recognize_client.cc

使用命令行中指定的輸入(麥克風)設備打開輸入流。在這種情況下,您使用的是每秒 16K 采樣和 16 位采樣的一個通道。

int StreamingRecognizeClient::DoStreamingFromMicrophone(const std::string& audio_device, bool& request_exit)
{
 nr::AudioEncoding encoding = nr::LINEAR_PCM;
 
 adc.setErrorCallback(rtErrorCallback);

 RtAudio::StreamParameters parameters;
 parameters.nChannels = 1;
 parameters.firstChannel = 0;
 unsigned int sampleRate = 16000;
 unsigned int bufferFrames = 1600; // (0.1 sec of rec) sample frames
 RtAudio::StreamOptions streamOptions;
 streamOptions.flags = RTAUDIO_MINIMIZE_LATENCY;
…

RtAudioErrorType error = adc.openStream( nullptr, ¶meters, RTAUDIO_SINT16, sampleRate, &bufferFrames, &MicrophoneCallbackMain, static_cast(&uData), &streamOptions);

使用.proto 文件指定的協議 api 接口(在文件夾riva/proto的源中)打開與 Riva 服務器的grpc通信通道:

int StreamingRecognizeClient::DoStreamingFromMicrophone(const std::string& audio_device, bool& request_exit)
{
…

std::shared_ptr call = std::make_shared(1, word_time_offsets_);
call->streamer = stub_->StreamingRecognize(&call->context);

// Send first request
nr_asr::StreamingRecognizeRequest request;
auto streaming_config = request.mutable_streaming_config();
streaming_config->set_interim_results(interim_results_);
auto config = streaming_config->mutable_config();
config->set_sample_rate_hertz(sampleRate);
config->set_language_code(language_code_);
config->set_encoding(encoding);
config->set_max_alternatives(max_alternatives_);
config->set_audio_channel_count(parameters.nChannels);
config->set_enable_word_time_offsets(word_time_offsets_);
config->set_enable_automatic_punctuation(automatic_punctuation_);
config->set_enable_separate_recognition_per_channel(separate_recognition_per_channel_);
config->set_verbatim_transcripts(verbatim_transcripts_);
if (model_name_ != "") {
 config->set_model(model_name_);
}

call->streamer->Write(request);

開始發送麥克風通過grpc消息接收到的音頻數據到riva

static int MicrophoneCallbackMain( void *outputBuffer, void *inputBuffer, unsigned int nBufferFrames, double streamTime, RtAudioStreamStatus status, void *userData )

通過服務器的grpc應答接收轉錄的音頻:

void
StreamingRecognizeClient::ReceiveResponses(std::shared_ptr call, bool audio_device)
{
…

while (call->streamer->Read(&call->response)) {  // Returns false when no m ore to read.
 call->recv_times.push_back(std::chrono::steady_clock::now());

 // Reset the partial transcript
 call->latest_result_.partial_transcript = "";
 call->latest_result_.partial_time_stamps.clear();

 bool is_final = false;
 for (int r = 0; r < call->response.results_size(); ++r) {
   const auto& result = call->response.results(r);
   if (result.is_final()) {
     is_final = true;
   }

…

   call->latest_result_.audio_processed = result.audio_processed();
   if (print_transcripts_) {
     call->AppendResult(result);
   }
 }

 if (call->response.results_size() && interim_results_ && print_transcripts_) {
   std::cout << call->latest_result_.final_transcripts[0] +
                    call->latest_result_.partial_transcript
             << std::endl;
 }

 call->recv_final_flags.push_back(is_final);
}

開發語音 AI 應用程序的資源

通過識別你的聲音或執行命令,語音人工智能正在從在聯絡中心授權實際人類擴展到在元宇宙授權數字人類。

關于作者

Sirisha Rella 是 NVIDIA 的技術產品營銷經理,專注于計算機視覺、語音和基于語言的深度學習應用。 Sirisha 獲得了密蘇里大學堪薩斯城分校的計算機科學碩士學位,是國家科學基金會大學習中心的研究生助理。

Davide Onofrio 是 NVIDIA 的高級深度學習軟件技術營銷工程師。他在 NVIDIA 專注于深度學習技術開發人員關注內容的開發和演示。戴維德在生物特征識別、虛擬現實和汽車行業擔任計算機視覺和機器學習工程師已有多年經驗。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4990

    瀏覽量

    103118
  • AI
    AI
    +關注

    關注

    87

    文章

    30947

    瀏覽量

    269213
  • vr
    vr
    +關注

    關注

    34

    文章

    9640

    瀏覽量

    150313
收藏 人收藏

    評論

    相關推薦

    傳蘋果正開發下一代無線充電技術

    據彭博社報道,有傳聞稱蘋果公司目前正致力于開發下一代無線充電技術,將可允許iPhone和iPad用戶遠距離充電。報道稱,有熟知內情的消息人士透露:“蘋果公司正在與美國和亞洲伙伴展開合作以開發新的無線
    發表于 02-01 14:26

    用Java開發下一代嵌入式產品

    ,進行了優化,還有簡潔的開發文檔。如果你是名Java程序員,并且準備好和我同加入機器間技術的潮流,或者說開發下一代改變世界的設備,那么就
    發表于 11-05 09:12

    S2C與Japan Circuit合作,共同開發下一代超高速

    S2C與Japan Circuit合作,共同開發下一代超高速SoC原型驗證系統 S2C近日宣布,其與Japan Circuit 公司(進行合作,針對Altera及Xilinx最新的FPGA器件,共同研發下一代高速SoC原型
    發表于 08-07 07:39 ?556次閱讀

    用CompactRIO和LabVIEW開發下一代機器人控制系

    用CompactRIO和LabVIEW開發下一代機器人控制系統 Author(s):Bill Miller - FIRST Frank Merrick - FIRSTKate Pilotte
    發表于 01-21 17:01 ?809次閱讀

    安森美開發下一代GaN-on-Si功率器件

    安森美半導體(ON Semiconductor)加入了領先納米電子研究中心imec的多合作伙伴業界研究及開發項目,共同開發下一代硅基氮化鎵(GaN-on-Si)功率器件。
    發表于 10-10 13:41 ?1123次閱讀

    三星電子與丹麥頂級音響公司合作,共同開發下一代顯示器

    據悉,三星電子日前宣布與丹麥頂級音響公司Steinway Lyngdorf合作,共同開發下一代顯示器“The Wall Professional”。
    發表于 06-08 14:33 ?1006次閱讀

    蘋果將開發顯示屏 將大舉開發下一代MicroLED

    知情人士稱,蘋果公司正在大舉投資開發下一代MicroLED顯示屏。寄希望于 MicroLED 屏幕,掌控MicroLED技術將有助于蘋果在日益成熟的智能手機市場脫穎而出。
    發表于 03-19 17:06 ?3836次閱讀

    英飛凌與Aaware達成戰略合作,開發下一代語音開發平臺

    , Inc.近日聯合宣布,雙方正式建立合作伙伴關系,同時開啟了下一代語音開發平臺項目,該平臺預計將在今夏后期推出。
    的頭像 發表于 07-27 16:55 ?4076次閱讀
    英飛凌與Aaware達成戰略合作,<b class='flag-5'>開發下一代</b><b class='flag-5'>語音</b><b class='flag-5'>開發</b>平臺

    IBM宣布在紐約投資20億美元建立個新的IBMAI硬件中心 旨在開發下一代AI硬件

    當地時間2月7日,美國科技巨頭 IBM 宣布將在紐約州立大學和其他合作伙伴的共同努力下,在紐約建立個新的 IBM AI 硬件中心,旨在開發下一代 AI 硬件。據彭博消息,IBM 將在
    的頭像 發表于 02-11 15:16 ?2550次閱讀

    電裝將與高通共同開發下一代座艙系統

    據ZDNET Japan報道,日本電裝公司近日宣布和高通子公司高通技術合作,共同開發下一代座艙系統。
    的頭像 發表于 01-10 16:58 ?2827次閱讀

    擴展現實或將成為下一代生產力工具

    以“虛實共元”為主題的AWE Asia 2022產業博覽會于8月26日于上海阿納迪酒店隆重開幕。影創科技CEO孫立出席開幕式并作為首位演講嘉賓,為觀眾帶來了《不只是玩游戲!擴展現實將成為下一代生產力工具》主題演講。
    發表于 08-27 11:24 ?470次閱讀

    KYOCERA AVX和VisIC Technologies合作開發下一代電車應用GaN技術

    KYOCERA AVX和VisIC Technologies合作開發下一代電車應用GaN技術
    的頭像 發表于 03-01 13:54 ?885次閱讀
    KYOCERA AVX和VisIC Technologies合作<b class='flag-5'>開發下一代</b>電車應用GaN技術

    Skylark Lasers開發下一代量子導航和計時系統

    據麥姆斯咨詢報道,Skylark Lasers近日宣布獲得“創新英國(Innovate UK)”項目234萬英鎊資金,以助其開發下一代量子導航和計時系統。
    的頭像 發表于 07-18 09:01 ?889次閱讀

    三星電子已開始與Naver合作開發下一代AI芯片Mach-2

    三星電子與Naver合作開發下一代AI芯片Mach-2,這舉措標志著兩家公司在人工智能領域的深度合作進步加強。
    的頭像 發表于 04-18 14:40 ?704次閱讀

    豐田、日產和本田將合作開發下一代汽車的AI和芯片

    豐田、日產和本田等日本主要汽車制造商確實計劃聯手開發下一代汽車的軟件,包括在生成式人工智能(AI)和半導體(芯片)等領域進行合作。
    的頭像 發表于 05-20 10:25 ?978次閱讀
    主站蜘蛛池模板: 风流护士| 日夜夜操| 女人的逼毛片| 欧美最猛黑人xxxxwww| 天天看a| 天天狠天天透天干天天怕处| 手机看片1024日韩| 中国特黄一级片| 午夜免费观看| 交专区videossex另类| 午夜影院黄| 丁香天堂网| xxxx69日本| 久久 在线播放| 久久精品国产亚洲婷婷| 依依成人精品无v国产| 免看一级a毛片一片成人不卡| 鲁丝一区二区三区| 四虎影城库| 永久免费在线观看| 性色成人网| 黄黄网| 天天操天天插| 天天做天天爽| 在线观看免费高清| 日本操穴| 一本高清在线| 午夜综合网| 亚洲国产系列| 国产区精品高清在线观看| 在线中文字幕一区| 亚洲免费国产| 美女扒开尿口让男人30视频| 天天摸天天碰中文字幕| 久青草免费视频| 夜夜爽夜夜爽| 啪啪免费视频网站| 性网站在线观看| 国产又色又爽又黄的网站在线一级| 天天操天天擦| 亚洲系列中文字幕一区二区|