Giter VIP home page Giter VIP logo

Comments (11)

kyakuno avatar kyakuno commented on May 28, 2024

@ooe1123 whisper large v3の分析の後、こちらをお願いできると嬉しいです🙇

from ailia-models.

kyakuno avatar kyakuno commented on May 28, 2024

実行例。

git clone https://github.com/reazon-research/ReazonSpeech
pip3 install ReazonSpeech/pkg/nemo-asr
reazonspeech-nemo-asr axell.wav

from ailia-models.

kyakuno avatar kyakuno commented on May 28, 2024

モデルサイズは2.48GB。

from ailia-models.

kyakuno avatar kyakuno commented on May 28, 2024
[00:00:00.780 --> 00:00:03.419] 自動運転の未来を加速させる
[00:00:04.139 --> 00:00:11.019] アクセルの取り組みaiをより速くより使いやすくすぐに始められる
[00:00:12.380 --> 00:00:15.820] 豊かな未来を創造する企業のよき理解者になる
[00:00:17.420 --> 00:00:22.699] ai実装に必要な学習から推論までトータルソリューションを提供できる
[00:00:23.980 --> 00:00:27.500] アクセルはテクノロジーで未来を加速させる
[00:00:29.580 --> 00:00:31.339] アクセルではハードウェア
[00:00:31.899 --> 00:00:38.539] ソフトウェアヨウ素技術の3つの開発力をもとに5つの事業領域に展開をしています
[00:00:40.460 --> 00:00:45.420] 現在めざましい発展を遂げているaiや日々重要性が増している
[00:00:45.980 --> 00:00:53.259] 情報セキュリティーなどさまざまな分野でアードウェアからソフトウェアまで一貫したソリューションを提供しています
[00:00:54.620 --> 00:00:58.140] 特にaiおよび自動運転領域では
[00:00:58.700 --> 00:01:01.020] アイデアsdkをコア技術として
[00:01:01.740 --> 00:01:05.900] モデルやアプリケーションなどの快適な開発環境の構築と
[00:01:06.540 --> 00:01:11.900] それを動かす実行基盤としてのハードウェアの開発を進めることで理想的な
[00:01:12.460 --> 00:01:14.859] ai開発環境の構築を目指しています
[00:01:18.460 --> 00:01:21.579] アイデアsdkはあらゆるハードウェアで動き
[00:01:22.540 --> 00:01:26.939] c+charpfysonjavaなど
[00:01:27.500 --> 00:01:30.379] さまざまなプログラミング言語にも対応しているため
[00:01:31.260 --> 00:01:35.420] スマートモビリティファクトリーオートメーション監視カメラなど
[00:01:36.060 --> 00:01:37.980] さまざまな用途でご利用いただけます
[00:01:40.620 --> 00:01:47.019] またアイデアsdkとともにお客様に自由に使っていただけるアイデアモデルズという
[00:01:47.659 --> 00:01:53.420] 240種類を超える最新のaiモデルとサンプルをキットハブで提供しています
[00:01:54.540 --> 00:02:00.859] モデルの種類は今後も順次増えていくためお客様に最適なモデルをご提供することが可能です
[00:02:03.579 --> 00:02:09.340] またiosandroidで気軽にaiを試せるデモアプリも公開しています
[00:02:10.939 --> 00:02:15.420] そしてai用の推論用アクセラレータも開発提供しています
[00:02:17.020 --> 00:02:22.379] ハードウェアアクセラレータのため推論の拘束化省電力化が可能になっています
[00:02:23.819 --> 00:02:27.099] アクセルはaiチップ設計拠点で進めている
[00:02:27.659 --> 00:02:39.819] aiアクセラレータ開発のための評価プラットフォームの構築に協力会社として参加し強化プラットフォームの実証チップであるai1に開発したアクセラレータが搭載されました
[00:02:41.020 --> 00:02:46.939] アクセルではaiチップ設計拠点が開発したai1強化ボードを使用して
[00:02:47.500 --> 00:03:01.500] ai用の評価を行っていますアクセルドットオートはアイデアsdkと連携することでプログラムを変更することなくgpuやcpuと同じように
[00:03:02.060 --> 00:03:04.700] ハードウェアアクセラレータを使用することができます
[00:03:06.379 --> 00:03:12.460] aiの活躍フィールドとして日々研究が進むモビリティの分野でもアイデアsdk
[00:03:13.099 --> 00:03:21.580] そしてアクセルアクセルではai事業の一環としてaiの推論処理用の
[00:03:24.780 --> 00:03:27.659] 自社で新規に設計したハードウェアアクセラレーターでして
[00:03:28.379 --> 00:03:32.140] aiの推論処理を高速かつ省電力に実行することができます
[00:03:39.180 --> 00:03:46.140] 今回aiチップ設計拠点が開発する実証チップのai1というものに協力会社としてアクセルが参加させていただきました
[00:03:52.140 --> 00:04:03.020] 本来aiチップを開発しようと思えるとaiのアクセラレーターのコアの部分開発だけではなくて周辺とのインタフェスの回路であったりさまざまな回路の設計というものが同時に必要になってくるんですけれども
[00:04:03.580 --> 00:04:11.260] ai蓄積拠点の作られたプラットーンを使うことでこういった部分のaiアクセラレーターのコアの部分に注力することができます
[00:04:14.939 --> 00:04:20.860] ai1はアクセルのaiアクセラレーターが搭載した初めてのチップということで現在評価を進めております
[00:04:29.660 --> 00:04:35.740] 自動運転におけるaiの利用の場面というのは一番分かりやすい利用例としてはやはり物体の認識の部分ですね
[00:04:36.620 --> 00:04:39.500] 走行している上での障害物の検出であるとか
[00:04:40.220 --> 00:04:59.019] 対向車歩行者みたいな自動運転で使用される物体認識であるとかaiの処理における特徴としては非常に演算量が多いというところですね自動運転の車両の中でやはりその限られた電力車の中で賄える電力処理をしなければいけない機材はボンネットであるとかトランクルームみたいなところに入っておりますのでそういった点であり
[00:05:02.300 --> 00:05:04.939] 一つアクセルのaiアクセラレーターの特徴的な点として
[00:05:05.500 --> 00:05:09.980] 専用設計にしているというaiの推論という処理に特化した設計
[00:05:10.620 --> 00:05:27.660] その結果と比べて現在自動運転を実現するためのプラットフォーム特にそのハードウェアどういったハードウェアを使うかみたいなところはまだまだ研究開発の段階であると考えておりまして
[00:05:29.019 --> 00:05:40.620] 実際にaiの処理を実現する上でもどういったハードウェア例えばcpuでやるのかgpuでやるのかもしくはaiチップをでやるのかそういったところはまだまだ評価が必要な段階と考えております
[00:05:41.259 --> 00:05:47.740] そういった中でもアイデアを使うことでさまざまなプラットフォーム上でシムレスにaiの
[00:05:48.459 --> 00:05:56.459] 水論処理が可能になりますのでどういったハードウエアを使うべきかそういったような評価研究開発みたいな部分で使用できると考えております
[00:05:57.259 --> 00:06:05.420] まずアクセルとしては現在取り組んでおります自動運転向けのsocuですねこれをベースに自動運転の実証というものを進めていきたいと考えております
[00:06:06.379 --> 00:06:10.060] その先という意味では今アクセルの持っている技術力というものを生かして
[00:06:18.379 --> 00:06:27.500] 世界最高水準の性能を持ちあらゆるデバイスに実装できる独自開発のエッジaiフレームワークアイデアsdk
[00:06:28.379 --> 00:06:34.139] そしてアイデアsdkと連携する自動運転に最適化したハードウェアip
[00:06:35.019 --> 00:07:04.220] c。

from ailia-models.

kyakuno avatar kyakuno commented on May 28, 2024
[00:00:00.780 --> 00:00:01.980] こんにちは先生。
[00:00:02.140 --> 00:00:04.700] 最近手足のけいれんがあり動機も感じます。
[00:00:05.179 --> 00:00:05.580] こんにちは。
[00:00:05.900 --> 00:00:09.179] 手足のけいれんと動機がある場合心臓の問題が考えられます。
[00:00:09.500 --> 00:00:13.179] けいれんや動機の発作がいつ頻繁に起こるかを教えていただけますか。
[00:00:13.580 --> 00:00:14.859] けいれんはほとんど毎日、
[00:00:14.939 --> 00:00:15.899] 動機はたまにです。
[00:00:16.140 --> 00:00:19.580] けいれんと動機が日常的に起こる場合は心臓や血液、
[00:00:19.660 --> 00:00:22.300] 循環系に何かしらの問題がある可能性があります。
[00:00:22.620 --> 00:00:24.859] 一度、心臓の検査を受ける必要があります。
[00:00:25.339 --> 00:00:27.179] 心臓の検査を受ける必要があるのですか。
[00:00:30.460 --> 00:00:33.980] まずは心臓の電気活動を測定するために心電図を撮影します。
[00:00:34.219 --> 00:00:39.020] また、動脈硬化の状態を調べるために移行検査やmriを行うことがあります。
[00:00:39.500 --> 00:00:40.460] そうですか、分かりました。
[00:00:40.619 --> 00:00:42.300] 心臓の検査を予約しましょうか。
[00:00:42.539 --> 00:00:43.660] はい、ご予約ください。
[00:00:43.820 --> 00:00:48.700] また心臓病がうたわれる場合は内科医や心臓専門医に紹介することがあります。
[00:00:49.020 --> 00:00:50.300] ありがとうございます、先生。
[00:00:50.539 --> 00:00:53.660] どういたしまして、心配なことがあればいつでも連絡してください。

from ailia-models.

kyakuno avatar kyakuno commented on May 28, 2024

精度は実用的な印象。

from ailia-models.

kyakuno avatar kyakuno commented on May 28, 2024

ONNXに変換して速度評価をしてみたい。

from ailia-models.

kyakuno avatar kyakuno commented on May 28, 2024

whisper large v2

[00:00.000 --> 00:04.000] 自動運転の未来を加速させる
[00:04.000 --> 00:06.000] アクセルの取り組み
[00:07.000 --> 00:12.000] AIをより早く、より使いやすく、すぐに始められる
[00:12.000 --> 00:17.000] 豊かな未来を想像する企業の良き理解者になる
[00:17.000 --> 00:21.000] AI実装に必要な学習から推論まで
[00:21.000 --> 00:24.000] トータルソリューションを提供できる
[00:24.000 --> 00:28.000] アクセルはテクノロジーで未来を加速させる
[00:29.000 --> 00:34.000] アクセルではハードウェア、ソフトウェア、要素技術の
[00:34.000 --> 00:39.000] 3つの開発力をもとに、5つの事業領域に展開をしています
[00:40.000 --> 00:44.000] 現在、目覚ましい発展を遂げているAIや
[00:44.000 --> 00:47.000] 日々重要性が増している情報セキュリティなど
[00:47.000 --> 00:51.000] さまざまな分野で、ハードウェアからソフトウェアまで
[00:51.000 --> 00:54.000] 一貫したソリューションを提供しています
[00:54.000 --> 00:58.000] 特に、AI及び自動運転領域では
[00:58.000 --> 01:03.000] Ilea SDKをコア技術として、モデルやアプリケーションなどの
[01:03.000 --> 01:09.000] 快適な開発環境の構築と、それを動かす実行基盤としての
[01:09.000 --> 01:11.000] ハードウェアの開発を進めることで
[01:11.000 --> 01:15.000] 理想的なAI開発環境の構築を目指しています
[01:18.000 --> 01:22.000] Ilea SDKはあらゆるハードウェアで動き
[01:22.000 --> 01:27.000] C++、C-Sharp、Python、Javaなど
[01:27.000 --> 01:31.000] さまざまなプログラミング言語にも対応しているため
[01:31.000 --> 01:36.000] スマートモビリティ、バクトリーオートメーション、監視カメラなど
[01:36.000 --> 01:38.000] さまざまな用途でご利用いただけます
[01:40.000 --> 01:45.000] また、Ilea SDKとともに、お客様に自由に使っていただける
[01:45.000 --> 01:51.000] Ilea Modelsという240種類を超える最新のAIモデルと
[01:51.000 --> 01:54.000] サンプルをGitHubで提供しています
[01:54.000 --> 01:57.000] モデルの種類は今後も順次増えていくため
[01:57.000 --> 02:01.000] お客様に最適なモデルをご提供することが可能です
[02:03.000 --> 02:10.000] また、iOS、Androidで気軽にAIを試せるデモアプリも公開しています
[02:11.000 --> 02:16.000] そして、AI用の推論用アクセラレータも開発、提供しています
[02:17.000 --> 02:23.000] ハードウェアアクセラレータのため、推論の高速化、省電力化が可能になっています
[02:24.000 --> 02:27.000] アクセルは、AIチップ設計拠点で進めている
[02:27.000 --> 02:32.000] AIアクセラレータ開発のための強化プラットフォームの構築に
[02:32.000 --> 02:36.000] 協力会社として参加し、強化プラットフォームの実証チップである
[02:36.000 --> 02:40.000] AI1に開発したアクセラレータが搭載されました
[02:41.000 --> 02:47.000] アクセルでは、AIチップ設計拠点が開発したAI1強化ボードを使用して
[02:47.000 --> 02:51.000] AI用の推論用アクセラレータの評価を行っています
[02:53.000 --> 02:59.000] Axel.Oとは、Irea SDKと連携することでプログラムを変更することなく
[02:59.000 --> 03:05.000] GPUやCPUと同じようにハードウェアアクセラレータを使用することができます
[03:06.000 --> 03:11.000] AIの活躍フィールドとして日々研究が進むモビリティの分野でも
[03:11.000 --> 03:16.000] Irea SDK、そしてAxel.Oとは関わっています
[03:18.000 --> 03:20.000] AxelではAI事業の一環として
[03:20.000 --> 03:24.000] AIの推論処理用のハードウェアアクセラレータを研究開発しております
[03:24.000 --> 03:28.000] 自社で新規に設計したハードウェアアクセラレータでして
[03:28.000 --> 03:32.000] AIの推論処理を高速かつ省電力に実行することができます
[03:33.000 --> 03:35.000] 開発したアクセラレータは
[03:35.000 --> 03:38.000] FPGやASIC向けのIPとして販売していくことを検討しております
[03:39.000 --> 03:43.000] 今回AIチップ設計拠点が開発する実証チップのAI-1というものに
[03:43.000 --> 03:46.000] 協力会社としてAxelが参加させていただきました
[03:47.000 --> 03:52.000] AI-1にはこのAxelの開発したAIアクセラレータが搭載されております
[03:52.000 --> 03:55.000] 本来AIチップを開発しようと思うと
[03:55.000 --> 03:58.000] AIのアクセラレータのコアの部分開発だけではなくて
[03:58.000 --> 04:00.000] 周辺とのインタフェースの回路であったり
[04:00.000 --> 04:03.000] 様々な回路の設計が必要になってくるんですけれども
[04:03.000 --> 04:06.000] AIチップ設計拠点の作られたプラトーンを使うことで
[04:06.000 --> 04:11.000] こういった部分のAIアクセラレータのコアの部分に注力することができます
[04:11.000 --> 04:14.000] その結果開発の効率が非常に上がります
[04:15.000 --> 04:19.000] AI-1はAxelのAIアクセラレータが搭載した初めてのチップということで
[04:19.000 --> 04:21.000] 現在評価を進めております
[04:22.000 --> 04:25.000] またAxelでは自動運転向けのチップとして
[04:25.000 --> 04:29.000] AxelのAIアクセラレータを搭載した新しいシステムオンチップを研究開発しております
[04:29.000 --> 04:32.000] 自動運転におけるAIの利用の場面というのは
[04:32.000 --> 04:36.000] 一番わかりやすい利用例としてはやはり物体の認識の部分ですね
[04:36.000 --> 04:39.000] 走行している上での障害物の検出であるとか
[04:39.000 --> 04:41.000] 対向者、歩行者みたいな
[04:41.000 --> 04:43.000] 自動運転で使用される物体認識であるとか
[04:43.000 --> 04:48.000] AIの処理における特徴としては非常に演算量が多いというところですね
[04:48.000 --> 04:51.000] 自動運転の車両の中でやはり限られた電力
[04:51.000 --> 04:54.000] 車の中で賄える電力処理をしなければいけない
[04:54.000 --> 04:58.000] 機材はボンネットであるとかトランクルームみたいなところに入っておりますので
[04:58.000 --> 05:02.000] そういった点でやはり省電力といったものが求められております
[05:02.000 --> 05:05.000] 一つアクセルのエアアクセラレーターの特徴的な点としては
[05:05.000 --> 05:07.000] 専用設計にしているというのが
[05:07.000 --> 05:10.000] AIの推論という処理に特化した設計
[05:10.000 --> 05:13.000] その結果、CPUやGPUのような
[05:13.000 --> 05:18.000] 凡用のプロセッサーと比べて非常に高速かつ省電力になっております
[05:18.000 --> 05:22.000] 現在、自動運転を実現するためのプラットフォーム
[05:22.000 --> 05:25.000] 特にそのハードウェア、どういったハードウェアを使うかみたいなところは
[05:25.000 --> 05:28.000] まだまだ研究開発の段階であると考えておりまして
[05:28.000 --> 05:32.000] 実際にAIの処理を実現する上でも
[05:32.000 --> 05:35.000] どういったハードウェア、例えばCPUでやるのかGPUでやるのか
[05:35.000 --> 05:38.000] もしくはAIチップでやるのか
[05:38.000 --> 05:41.000] そういったところはまだまだ評価が必要な段階と考えております
[05:41.000 --> 05:45.000] そういった中でもIreasdkを使うことで
[05:45.000 --> 05:50.000] 様々なプラットフォーム上でシムレスにAIの推論処理が可能になりますので
[05:50.000 --> 05:52.000] どういったハードウェアを使うべきか
[05:52.000 --> 05:57.000] そういったような評価、研究開発みたいな部分で使用できると考えております
[05:57.000 --> 06:01.000] まず、アクセルとしては現在取り組んでおります自動運転向けのSOCですね
[06:01.000 --> 06:06.000] これをベースに自動運転の実証というものを進めていきたいと考えております
[06:06.000 --> 06:10.000] その先という意味では、今アクセルの持っている技術力というものを活かして
[06:10.000 --> 06:12.000] ハードウェア、ソフトウェアとはず
[06:12.000 --> 06:16.000] 自動運転分野の技術の加速に寄与していきたいと考えております
[06:18.000 --> 06:26.000] 世界最高水準の性能を持ち、あらゆるデバイスに実装できる独自開発のHAIフレームワーク
[06:26.000 --> 06:28.000] Ireasdk
[06:28.000 --> 06:34.000] そしてIreasdkと連携する自動運転に最適化したハードウェアIP
[06:34.000 --> 06:36.000] アクセル.オート
[06:39.000 --> 06:43.000] アクセルは自動運転の未来を加速させる
[06:46.000 --> 06:49.000] アクセル.オート

from ailia-models.

ooe1123 avatar ooe1123 commented on May 28, 2024

encoder

〇 site-packages\nemo\collections\asr\models\rnnt_models.py

class EncDecRNNTModel(ASRModel, ASRModuleMixin, ExportableEncDecModel):
    ...
    def transcribe(
        self,
        ...
    ) -> Tuple[List[str], Optional[List['Hypothesis']]]:
        try:
            ...
            with tempfile.TemporaryDirectory() as tmpdir:
                for test_batch in tqdm(temporary_datalayer, desc="Transcribing", disable=(not verbose)):
                    encoded, encoded_len = self.forward(
                        input_signal=test_batch[0].to(device), input_signal_length=test_batch[1].to(device)
                    )

from torch import nn

class Exp(nn.Module):
    def __init__(self, model):
        super().__init__()
        self.model = model

    def forward(self, input_signal, input_signal_length):
        encoded, encoded_len = self.model.forward(
            input_signal=input_signal, input_signal_length=input_signal_length
        )
        return encoded, encoded_len

class EncDecRNNTModel(ASRModel, ASRModuleMixin, ExportableEncDecModel):
    ...
    def transcribe(
        self,
        ...
    ) -> Tuple[List[str], Optional[List['Hypothesis']]]:
        try:
            ...
            with tempfile.TemporaryDirectory() as tmpdir:
                for test_batch in tqdm(temporary_datalayer, desc="Transcribing", disable=(not verbose)):
                    model = Exp(self)
                    print("------>")
                    x = (test_batch[0], test_batch[1])
                    torch.onnx.export(
                        model, x, 'onnx/encoder.onnx',
                        input_names=["input_signal", "input_signal_length"],
                        output_names=["encoded", "encoded_length"],
                        dynamic_axes={'input_signal' : [0, 1], 'input_signal_length':[0], 'encoded' : [0, 2], 'encoded_length':[0]},
                        verbose=False, opset_version=17
                    )
                    print("<------")
                    exit()

〇 site-packages\nemo\collections\asr\parts\preprocessing\features.py

class FilterbankFeatures(nn.Module):
    ...
    def __init__(
        self,
        ...
    ):
        ...
        self.stft = lambda x: torch.stft(
            x,
            ...
            return_complex=True,
        )
    ...
    def forward(self, x, seq_len, linear_spec=False):
        ...
        x = torch.view_as_real(x)

class FilterbankFeatures(nn.Module):
    ...
    def __init__(
        self,
        ...
    ):
        ...
        self.stft = lambda x: torch.stft(
            x,
            ...
            return_complex=False,
        )
    ...
    def forward(self, x, seq_len, linear_spec=False):
        ...
        # x = torch.view_as_real(x)

〇 site-packages\nemo\collections\asr\parts\submodules\multi_head_attention.py

class RelPositionMultiHeadAttentionLongformer(RelPositionMultiHeadAttention):
    ...
    def _get_invalid_locations_mask(self, w: int, device: str):
        ...
        mask = torch.stack(diagonals_list, dim=-1)

    def mask_invalid_locations(
        self, input_tensor: torch.Tensor, w: int,
    ):
        ...
        ending_input.masked_fill_(ending_mask, -float('inf'))

    def sliding_chunks_matmul_qk(self, q: torch.Tensor, k: torch.Tensor, w: int, padding_value: float) -> torch.Tensor:
        ...
        self.mask_invalid_locations(diagonal_attn, w)

        return diagonal_attn

class RelPositionMultiHeadAttentionLongformer(RelPositionMultiHeadAttention):
    ...
    def _get_invalid_locations_mask(self, w: int, device: str):
        ...
        mask = torch.tril(torch.ones((128, 129), dtype=torch.uint8)).flip(dims=(0,))

    def mask_invalid_locations(
        self, input_tensor: torch.Tensor, w: int,
    ):
        ...
        ending_input.masked_fill_(ending_mask, -float('inf'))

        a = torch.cat([beginning_input, input_tensor[:, :, :w, w + 1:]], dim=3)
        b = torch.cat([input_tensor[:, :, -w:, :-(w + 1)], ending_input], dim=3)
        input_tensor = torch.cat([a,b], dim=2)
        return input_tensor

    def sliding_chunks_matmul_qk(self, q: torch.Tensor, k: torch.Tensor, w: int, padding_value: float) -> torch.Tensor:
        ...
        diagonal_attn = self.mask_invalid_locations(diagonal_attn, w)

        return diagonal_attn

from ailia-models.

ooe1123 avatar ooe1123 commented on May 28, 2024

decoder

〇 site-packages\nemo\collections\asr\modules\rnnt.py

class RNNTDecoder(rnnt_abstract.AbstractRNNTDecoder, Exportable, AdapterModuleMixin):
    ...
    def batch_score_hypothesis(
        self, hypotheses: List[rnnt_utils.Hypothesis], cache: Dict[Tuple[int], Any], batch_states: List[torch.Tensor]
    ) -> Tuple[torch.Tensor, List[torch.Tensor], torch.Tensor]:
        ...
        if process:
            ...
            y, dec_states = self.predict(
                tokens, state=dec_states, add_sos=False, batch_size=batch
            )  # [B, 1, H], List([L, 1, H])

from torch import nn

class Exp(nn.Module):
    def __init__(self, model):
        super().__init__()
        self.model = model

    def forward(self, tokens, dec_states0, dec_states1):
        y, dec_states = self.model.predict(
            tokens, state=[dec_states0, dec_states1], add_sos=False, batch_size=None
        )
        return y, dec_states[0], dec_states[1]

class RNNTDecoder(rnnt_abstract.AbstractRNNTDecoder, Exportable, AdapterModuleMixin):
    ...
    def batch_score_hypothesis(
        self, hypotheses: List[rnnt_utils.Hypothesis], cache: Dict[Tuple[int], Any], batch_states: List[torch.Tensor]
    ) -> Tuple[torch.Tensor, List[torch.Tensor], torch.Tensor]:
        ...
        if process:
            ...
            if batch == 4:
                print("------>")
                model = Exp(self)
                x = (tokens, dec_states[0], dec_states[1])
                torch.onnx.export(
                    model, x, 'decoder.onnx',
                    input_names=["tokens", "in_state0", "in_state1"],
                    output_names=["y", "out_state0", "out_state1"],
                    dynamic_axes={'tokens' : [0], 'in_state0' : [1], 'in_state1' : [1], 'y' : [0], 'out_state0' : [1], 'out_state1' : [1]},
                    verbose=False, opset_version=17
                )
                print("<------")
                exit()

from ailia-models.

ooe1123 avatar ooe1123 commented on May 28, 2024

joint

〇 site-packages\nemo\collections\asr\parts\submodules\rnnt_beam_decoding.py

class BeamRNNTInfer(Typing):
    ...
    def align_length_sync_decoding(
        self, h: torch.Tensor, encoded_lengths: torch.Tensor, partial_hypotheses: Optional[Hypothesis] = None
    ) -> List[Hypothesis]:
        ...
        for i in range(h_length + u_max):
            ...
            if B_:
                ...
                h_enc = torch.stack([h[1] for h in h_states])  # [T=beam, D]
                h_enc = h_enc.unsqueeze(1)  # [B=beam, T=1, D]; batch over the beams

                # Extract the log probabilities and the predicted tokens
                beam_logp = torch.log_softmax(
                    self.joint.joint(h_enc, beam_y) / self.softmax_temperature, dim=-1
                )  # [B=beam, 1, 1, V + 1]

class BeamRNNTInfer(Typing):
    ...
    def align_length_sync_decoding(
        self, h: torch.Tensor, encoded_lengths: torch.Tensor, partial_hypotheses: Optional[Hypothesis] = None
    ) -> List[Hypothesis]:
        ...
        for i in range(h_length + u_max):
            ...
            if B_:
                ...
                h_enc = torch.stack([h[1] for h in h_states])  # [T=beam, D]
                h_enc = h_enc.unsqueeze(1)  # [B=beam, T=1, D]; batch over the beams

                # Extract the log probabilities and the predicted tokens
                if 1 < len(h_enc):
                    self.joint.forward = self.joint.joint
                    print("------>")
                    x = (h_enc, beam_y)
                    torch.onnx.export(
                        self.joint, x, 'joint.onnx',
                        input_names=["f", "g"],
                        output_names=["res"],
                        dynamic_axes={'f' : [0], 'g' : [0], 'res' : [0]},
                        verbose=False, opset_version=17
                    )
                    print("<------")
                    exit()

from ailia-models.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.