deploy: 13f55d073513b3beaefdf0b7e16237b35199ca04

This commit is contained in:
csukuangfj 2024-06-12 16:02:46 +00:00
parent 2660477d0d
commit 7b03f27183
90 changed files with 2160 additions and 20 deletions

View File

@ -34,6 +34,8 @@ which will give you something like below:
.. code-block:: bash .. code-block:: bash
"torch2.3.1-cuda12.1"
"torch2.3.1-cuda11.8"
"torch2.2.2-cuda12.1" "torch2.2.2-cuda12.1"
"torch2.2.2-cuda11.8" "torch2.2.2-cuda11.8"
"torch2.2.1-cuda12.1" "torch2.2.1-cuda12.1"

View File

@ -0,0 +1,41 @@
Two approaches
==============
Two approaches for FST-based forced alignment will be described:
- `Kaldi`_-based
- `k2`_-based
Note that the `Kaldi`_-based approach does not depend on `Kaldi`_ at all.
That is, you don't need to install `Kaldi`_ in order to use it. Instead,
we use `kaldi-decoder`_, which has ported the C++ decoding code from `Kaldi`_
without depending on it.
Differences between the two approaches
--------------------------------------
The following table compares the differences between the two approaches.
.. list-table::
* - Features
- `Kaldi`_-based
- `k2`_-based
* - Support CUDA
- No
- Yes
* - Support CPU
- Yes
- Yes
* - Support batch processing
- No
- Yes on CUDA; No on CPU
* - Support streaming models
- Yes
- No
* - Support C++ APIs
- Yes
- Yes
* - Support Python APIs
- Yes
- Yes

View File

@ -0,0 +1,18 @@
FST-based forced alignment
==========================
This section describes how to perform **FST-based** ``forced alignment`` with models
trained by `CTC`_ loss.
We use `CTC FORCED ALIGNMENT API TUTORIAL <https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html>`_
from `torchaudio`_ as a reference in this section.
Different from `torchaudio`_, we use an ``FST``-based approach.
.. toctree::
:maxdepth: 2
:caption: Contents:
diff
kaldi-based
k2-based

View File

@ -0,0 +1,4 @@
k2-based forced alignment
=========================
TODO(fangjun)

View File

@ -0,0 +1,712 @@
Kaldi-based forced alignment
============================
This section describes in detail how to use `kaldi-decoder`_
for **FST-based** ``forced alignment`` with models trained by `CTC`_ loss.
.. hint::
We have a colab notebook walking you through this section step by step.
|kaldi-based forced alignment colab notebook|
.. |kaldi-based forced alignment colab notebook| image:: https://colab.research.google.com/assets/colab-badge.svg
:target: https://github.com/k2-fsa/colab/blob/master/icefall/ctc_forced_alignment_fst_based_kaldi.ipynb
Prepare the environment
-----------------------
Before you continue, make sure you have setup `icefall`_ by following :ref:`install icefall`.
.. hint::
You don't need to install `Kaldi`_. We will ``NOT`` use `Kaldi`_ below.
Get the test data
-----------------
We use the test wave
from `CTC FORCED ALIGNMENT API TUTORIAL <https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html>`_
.. code-block:: python3
import torchaudio
# Download test wave
speech_file = torchaudio.utils.download_asset("tutorial-assets/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav")
print(speech_file)
waveform, sr = torchaudio.load(speech_file)
transcript = "i had that curiosity beside me at this moment".split()
print(waveform.shape, sr)
assert waveform.ndim == 2
assert waveform.shape[0] == 1
assert sr == 16000
The test wave is downloaded to::
$HOME/.cache/torch/hub/torchaudio/tutorial-assets/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav
.. raw:: html
<table>
<tr>
<th>Wave filename</th>
<th>Content</th>
<th>Text</th>
</tr>
<tr>
<td>Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav</td>
<td>
<audio title="Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
<td>
i had that curiosity beside me at this moment
</td>
</tr>
</table>
We use the test model
from `CTC FORCED ALIGNMENT API TUTORIAL <https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html>`_
.. code-block:: python3
import torch
bundle = torchaudio.pipelines.MMS_FA
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = bundle.get_model(with_star=False).to(device)
The model is downloaded to::
$HOME/.cache/torch/hub/checkpoints/model.pt
Compute log_probs
-----------------
.. code-block:: bash
with torch.inference_mode():
emission, _ = model(waveform.to(device))
print(emission.shape)
It should print::
torch.Size([1, 169, 28])
Create token2id and id2token
----------------------------
.. code-block:: python3
token2id = bundle.get_dict(star=None)
id2token = {i:t for t, i in token2id.items()}
token2id["<eps>"] = 0
del token2id["-"]
Create word2id and id2word
--------------------------
.. code-block:: python3
words = list(set(transcript))
word2id = dict()
word2id['eps'] = 0
for i, w in enumerate(words):
word2id[w] = i + 1
id2word = {i:w for w, i in word2id.items()}
Note that we only use words from the transcript of the test wave.
Generate lexicon-related files
------------------------------
We use the code below to generate the following 4 files:
- ``lexicon.txt``
- ``tokens.txt``
- ``words.txt``
- ``lexicon_disambig.txt``
.. caution::
``words.txt`` contains only words from the transcript of the test wave.
.. code-block:: python3
from prepare_lang import add_disambig_symbols
lexicon = [(w, list(w)) for w in word2id if w != "eps"]
lexicon_disambig, max_disambig_id = add_disambig_symbols(lexicon)
with open('lexicon.txt', 'w', encoding='utf-8') as f:
for w, tokens in lexicon:
f.write(f"{w} {' '.join(tokens)}\n")
with open('lexicon_disambig.txt', 'w', encoding='utf-8') as f:
for w, tokens in lexicon_disambig:
f.write(f"{w} {' '.join(tokens)}\n")
with open('tokens.txt', 'w', encoding='utf-8') as f:
for t, i in token2id.items():
if t == '-':
t = "<eps>"
f.write(f"{t} {i}\n")
for k in range(max_disambig_id + 2):
f.write(f"#{k} {len(token2id) + k}\n")
with open('words.txt', 'w', encoding='utf-8') as f:
for w, i in word2id.items():
f.write(f"{w} {i}\n")
f.write(f'#0 {len(word2id)}\n')
To give you an idea about what the generated files look like::
head -n 50 lexicon.txt lexicon_disambig.txt tokens.txt words.txt
prints::
==> lexicon.txt <==
moment m o m e n t
beside b e s i d e
i i
this t h i s
curiosity c u r i o s i t y
had h a d
that t h a t
at a t
me m e
==> lexicon_disambig.txt <==
moment m o m e n t
beside b e s i d e
i i
this t h i s
curiosity c u r i o s i t y
had h a d
that t h a t
at a t
me m e
==> tokens.txt <==
a 1
i 2
e 3
n 4
o 5
u 6
t 7
s 8
r 9
m 10
k 11
l 12
d 13
g 14
h 15
y 16
b 17
p 18
w 19
c 20
v 21
j 22
z 23
f 24
' 25
q 26
x 27
<eps> 0
#0 28
#1 29
==> words.txt <==
eps 0
moment 1
beside 2
i 3
this 4
curiosity 5
had 6
that 7
at 8
me 9
#0 10
.. note::
This test model uses characters as modeling unit. If you use other types of
modeling unit, the same code can be used without any change.
Convert transcript to an FST graph
----------------------------------
.. code-block:: bash
egs/librispeech/ASR/local/prepare_lang_fst.py --lang-dir ./
The above command should generate two files ``H.fst`` and ``HL.fst``. We will
use ``HL.fst`` below::
-rw-r--r-- 1 root root 13K Jun 12 08:28 H.fst
-rw-r--r-- 1 root root 3.7K Jun 12 08:28 HL.fst
Force aligner
-------------
Now, everything is ready. We can use the following code to get forced alignments.
.. code-block:: python3
from kaldi_decoder import DecodableCtc, FasterDecoder, FasterDecoderOptions
import kaldifst
def force_align():
HL = kaldifst.StdVectorFst.read("./HL.fst")
decodable = DecodableCtc(emission[0].contiguous().cpu().numpy())
decoder_opts = FasterDecoderOptions(max_active=3000)
decoder = FasterDecoder(HL, decoder_opts)
decoder.decode(decodable)
if not decoder.reached_final():
print(f"failed to decode xxx")
return None
ok, best_path = decoder.get_best_path()
(
ok,
isymbols_out,
osymbols_out,
total_weight,
) = kaldifst.get_linear_symbol_sequence(best_path)
if not ok:
print(f"failed to get linear symbol sequence for xxx")
return None
# We need to use i-1 here since we have incremented tokens during
# HL construction
alignment = [i-1 for i in isymbols_out]
return alignment
alignment = force_align()
for i, a in enumerate(alignment):
print(i, id2token[a])
The output should be identical to
`<https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html#frame-level-alignments>`_.
For ease of reference, we list the output below::
0 -
1 -
2 -
3 -
4 -
5 -
6 -
7 -
8 -
9 -
10 -
11 -
12 -
13 -
14 -
15 -
16 -
17 -
18 -
19 -
20 -
21 -
22 -
23 -
24 -
25 -
26 -
27 -
28 -
29 -
30 -
31 -
32 i
33 -
34 -
35 h
36 h
37 a
38 -
39 -
40 -
41 d
42 -
43 -
44 t
45 h
46 -
47 a
48 -
49 -
50 t
51 -
52 -
53 -
54 c
55 -
56 -
57 -
58 u
59 u
60 -
61 -
62 -
63 r
64 -
65 i
66 -
67 -
68 -
69 -
70 -
71 -
72 o
73 -
74 -
75 -
76 -
77 -
78 -
79 s
80 -
81 -
82 -
83 i
84 -
85 t
86 -
87 -
88 y
89 -
90 -
91 -
92 -
93 b
94 -
95 e
96 -
97 -
98 -
99 -
100 -
101 s
102 -
103 -
104 -
105 -
106 -
107 -
108 -
109 -
110 i
111 -
112 -
113 d
114 e
115 -
116 m
117 -
118 -
119 e
120 -
121 -
122 -
123 -
124 a
125 -
126 -
127 t
128 -
129 t
130 h
131 -
132 i
133 -
134 -
135 -
136 s
137 -
138 -
139 -
140 -
141 m
142 -
143 -
144 o
145 -
146 -
147 -
148 m
149 -
150 -
151 e
152 -
153 n
154 -
155 t
156 -
157 -
158 -
159 -
160 -
161 -
162 -
163 -
164 -
165 -
166 -
167 -
168 -
To merge tokens, we use::
from icefall.ctc import merge_tokens
token_spans = merge_tokens(alignment)
for span in token_spans:
print(id2token[span.token], span.start, span.end)
The output is given below::
i 32 33
h 35 37
a 37 38
d 41 42
t 44 45
h 45 46
a 47 48
t 50 51
c 54 55
u 58 60
r 63 64
i 65 66
o 72 73
s 79 80
i 83 84
t 85 86
y 88 89
b 93 94
e 95 96
s 101 102
i 110 111
d 113 114
e 114 115
m 116 117
e 119 120
a 124 125
t 127 128
t 129 130
h 130 131
i 132 133
s 136 137
m 141 142
o 144 145
m 148 149
e 151 152
n 153 154
t 155 156
All of the code below is copied and modified
from `<https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html>`_.
Segment each word using the computed alignments
-----------------------------------------------
.. code-block:: python3
def unflatten(list_, lengths):
assert len(list_) == sum(lengths)
i = 0
ret = []
for l in lengths:
ret.append(list_[i : i + l])
i += l
return ret
word_spans = unflatten(token_spans, [len(word) for word in transcript])
print(word_spans)
The output is::
[[TokenSpan(token=2, start=32, end=33)],
[TokenSpan(token=15, start=35, end=37), TokenSpan(token=1, start=37, end=38), TokenSpan(token=13, start=41, end=42)],
[TokenSpan(token=7, start=44, end=45), TokenSpan(token=15, start=45, end=46), TokenSpan(token=1, start=47, end=48), TokenSpan(token=7, start=50, end=51)],
[TokenSpan(token=20, start=54, end=55), TokenSpan(token=6, start=58, end=60), TokenSpan(token=9, start=63, end=64), TokenSpan(token=2, start=65, end=66), TokenSpan(token=5, start=72, end=73), TokenSpan(token=8, start=79, end=80), TokenSpan(token=2, start=83, end=84), TokenSpan(token=7, start=85, end=86), TokenSpan(token=16, start=88, end=89)],
[TokenSpan(token=17, start=93, end=94), TokenSpan(token=3, start=95, end=96), TokenSpan(token=8, start=101, end=102), TokenSpan(token=2, start=110, end=111), TokenSpan(token=13, start=113, end=114), TokenSpan(token=3, start=114, end=115)],
[TokenSpan(token=10, start=116, end=117), TokenSpan(token=3, start=119, end=120)],
[TokenSpan(token=1, start=124, end=125), TokenSpan(token=7, start=127, end=128)],
[TokenSpan(token=7, start=129, end=130), TokenSpan(token=15, start=130, end=131), TokenSpan(token=2, start=132, end=133), TokenSpan(token=8, start=136, end=137)],
[TokenSpan(token=10, start=141, end=142), TokenSpan(token=5, start=144, end=145), TokenSpan(token=10, start=148, end=149), TokenSpan(token=3, start=151, end=152), TokenSpan(token=4, start=153, end=154), TokenSpan(token=7, start=155, end=156)]
]
.. code-block:: python3
def preview_word(waveform, spans, num_frames, transcript, sample_rate=bundle.sample_rate):
ratio = waveform.size(1) / num_frames
x0 = int(ratio * spans[0].start)
x1 = int(ratio * spans[-1].end)
print(f"{transcript} {x0 / sample_rate:.3f} - {x1 / sample_rate:.3f} sec")
segment = waveform[:, x0:x1]
return IPython.display.Audio(segment.numpy(), rate=sample_rate)
num_frames = emission.size(1)
.. code-block:: python3
preview_word(waveform, word_spans[0], num_frames, transcript[0])
preview_word(waveform, word_spans[1], num_frames, transcript[1])
preview_word(waveform, word_spans[2], num_frames, transcript[2])
preview_word(waveform, word_spans[3], num_frames, transcript[3])
preview_word(waveform, word_spans[4], num_frames, transcript[4])
preview_word(waveform, word_spans[5], num_frames, transcript[5])
preview_word(waveform, word_spans[6], num_frames, transcript[6])
preview_word(waveform, word_spans[7], num_frames, transcript[7])
preview_word(waveform, word_spans[8], num_frames, transcript[8])
The segmented wave of each word along with its time stamp is given below:
.. raw:: html
<table>
<tr>
<th>Word</th>
<th>Time</th>
<th>Wave</th>
</tr>
<tr>
<td>i</td>
<td>0.644 - 0.664 sec</td>
<td>
<audio title="i.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/i.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>had</td>
<td>0.704 - 0.845 sec</td>
<td>
<audio title="had.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/had.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>that</td>
<td>0.885 - 1.026 sec</td>
<td>
<audio title="that.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/that.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>curiosity</td>
<td>1.086 - 1.790 sec</td>
<td>
<audio title="curiosity.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/curiosity.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>beside</td>
<td>1.871 - 2.314 sec</td>
<td>
<audio title="beside.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/beside.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>me</td>
<td>2.334 - 2.414 sec</td>
<td>
<audio title="me.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/me.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>at</td>
<td>2.495 - 2.575 sec</td>
<td>
<audio title="at.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/at.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>this</td>
<td>2.595 - 2.756 sec</td>
<td>
<audio title="this.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/this.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>moment</td>
<td>2.837 - 3.138 sec</td>
<td>
<audio title="moment.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/moment.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
</table>
We repost the whole wave below for ease of reference:
.. raw:: html
<table>
<tr>
<th>Wave filename</th>
<th>Content</th>
<th>Text</th>
</tr>
<tr>
<td>Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav</td>
<td>
<audio title="Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
<td>
i had that curiosity beside me at this moment
</td>
</tr>
</table>
Summary
-------
Congratulations! You have succeeded in using the FST-based approach to
compute alignment of a test wave.

View File

@ -25,7 +25,7 @@ speech recognition recipes using `k2 <https://github.com/k2-fsa/k2>`_.
docker/index docker/index
faqs faqs
model-export/index model-export/index
fst-based-forced-alignment/index
.. toctree:: .. toctree::
:maxdepth: 3 :maxdepth: 3

View File

@ -15,8 +15,8 @@ We will show you step by step how to export it to `ncnn`_ and run it with `sherp
.. caution:: .. caution::
Please use a more recent version of PyTorch. For instance, ``torch 1.8`` ``torch > 2.0`` may not work. If you get errors while building pnnx, please switch
may ``not`` work. to ``torch < 2.0``.
1. Download the pre-trained model 1. Download the pre-trained model
--------------------------------- ---------------------------------

View File

@ -15,8 +15,8 @@ We will show you step by step how to export it to `ncnn`_ and run it with `sherp
.. caution:: .. caution::
Please use a more recent version of PyTorch. For instance, ``torch 1.8`` ``torch > 2.0`` may not work. If you get errors while building pnnx, please switch
may ``not`` work. to ``torch < 2.0``.
1. Download the pre-trained model 1. Download the pre-trained model
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -15,8 +15,8 @@ We will show you step by step how to export it to `ncnn`_ and run it with `sherp
.. caution:: .. caution::
Please use a more recent version of PyTorch. For instance, ``torch 1.8`` ``torch > 2.0`` may not work. If you get errors while building pnnx, please switch
may ``not`` work. to ``torch < 2.0``.
1. Download the pre-trained model 1. Download the pre-trained model
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

BIN
_static/kaldi-align/at.wav Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
_static/kaldi-align/had.wav Normal file

Binary file not shown.

BIN
_static/kaldi-align/i.wav Normal file

Binary file not shown.

BIN
_static/kaldi-align/me.wav Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -52,6 +52,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -50,6 +50,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -60,6 +60,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -70,6 +70,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
@ -136,7 +137,9 @@ docker images:</p>
</pre></div> </pre></div>
</div> </div>
<p>which will give you something like below:</p> <p>which will give you something like below:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;torch2.2.2-cuda12.1&quot;</span> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;torch2.3.1-cuda12.1&quot;</span>
<span class="s2">&quot;torch2.3.1-cuda11.8&quot;</span>
<span class="s2">&quot;torch2.2.2-cuda12.1&quot;</span>
<span class="s2">&quot;torch2.2.2-cuda11.8&quot;</span> <span class="s2">&quot;torch2.2.2-cuda11.8&quot;</span>
<span class="s2">&quot;torch2.2.1-cuda12.1&quot;</span> <span class="s2">&quot;torch2.2.1-cuda12.1&quot;</span>
<span class="s2">&quot;torch2.2.1-cuda11.8&quot;</span> <span class="s2">&quot;torch2.2.1-cuda11.8&quot;</span>

View File

@ -56,6 +56,7 @@
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li>

View File

@ -66,6 +66,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -61,6 +61,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -64,6 +64,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -58,6 +58,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -64,6 +64,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -61,6 +61,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -0,0 +1,182 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Two approaches &mdash; icefall 0.1 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=e031e9a9"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Kaldi-based forced alignment" href="kaldi-based.html" />
<link rel="prev" title="FST-based forced alignment" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
icefall
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../for-dummies/index.html">Icefall for dummies tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">FST-based forced alignment</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Two approaches</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#differences-between-the-two-approaches">Differences between the two approaches</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html">Kaldi-based forced alignment</a></li>
<li class="toctree-l2"><a class="reference internal" href="k2-based.html">k2-based forced alignment</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../huggingface/index.html">Huggingface</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../decoding-with-langugage-models/index.html">Decoding with language models</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">icefall</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">FST-based forced alignment</a></li>
<li class="breadcrumb-item active">Two approaches</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/k2-fsa/icefall/blob/master/docs/source/fst-based-forced-alignment/diff.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="two-approaches">
<h1>Two approaches<a class="headerlink" href="#two-approaches" title="Permalink to this heading"></a></h1>
<p>Two approaches for FST-based forced alignment will be described:</p>
<blockquote>
<div><ul class="simple">
<li><p><a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a>-based</p></li>
<li><p><a class="reference external" href="https://github.com/k2-fsa/k2">k2</a>-based</p></li>
</ul>
</div></blockquote>
<p>Note that the <a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a>-based approach does not depend on <a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a> at all.
That is, you dont need to install <a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a> in order to use it. Instead,
we use <a class="reference external" href="https://github.com/k2-fsa/kaldi-decoder">kaldi-decoder</a>, which has ported the C++ decoding code from <a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a>
without depending on it.</p>
<section id="differences-between-the-two-approaches">
<h2>Differences between the two approaches<a class="headerlink" href="#differences-between-the-two-approaches" title="Permalink to this heading"></a></h2>
<p>The following table compares the differences between the two approaches.</p>
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>Features</p></td>
<td><p><a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a>-based</p></td>
<td><p><a class="reference external" href="https://github.com/k2-fsa/k2">k2</a>-based</p></td>
</tr>
<tr class="row-even"><td><p>Support CUDA</p></td>
<td><p>No</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-odd"><td><p>Support CPU</p></td>
<td><p>Yes</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-even"><td><p>Support batch processing</p></td>
<td><p>No</p></td>
<td><p>Yes on CUDA; No on CPU</p></td>
</tr>
<tr class="row-odd"><td><p>Support streaming models</p></td>
<td><p>Yes</p></td>
<td><p>No</p></td>
</tr>
<tr class="row-even"><td><p>Support C++ APIs</p></td>
<td><p>Yes</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-odd"><td><p>Support Python APIs</p></td>
<td><p>Yes</p></td>
<td><p>Yes</p></td>
</tr>
</tbody>
</table>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="FST-based forced alignment" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="kaldi-based.html" class="btn btn-neutral float-right" title="Kaldi-based forced alignment" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2021, icefall development team.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>FST-based forced alignment &mdash; icefall 0.1 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=e031e9a9"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Two approaches" href="diff.html" />
<link rel="prev" title="Export LSTM transducer models to ncnn" href="../model-export/export-ncnn-lstm.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
icefall
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../for-dummies/index.html">Icefall for dummies tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">FST-based forced alignment</a><ul>
<li class="toctree-l2"><a class="reference internal" href="diff.html">Two approaches</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html">Kaldi-based forced alignment</a></li>
<li class="toctree-l2"><a class="reference internal" href="k2-based.html">k2-based forced alignment</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../huggingface/index.html">Huggingface</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../decoding-with-langugage-models/index.html">Decoding with language models</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">icefall</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">FST-based forced alignment</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/k2-fsa/icefall/blob/master/docs/source/fst-based-forced-alignment/index.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="fst-based-forced-alignment">
<h1>FST-based forced alignment<a class="headerlink" href="#fst-based-forced-alignment" title="Permalink to this heading"></a></h1>
<p>This section describes how to perform <strong>FST-based</strong> <code class="docutils literal notranslate"><span class="pre">forced</span> <span class="pre">alignment</span></code> with models
trained by <a class="reference external" href="https://www.cs.toronto.edu/~graves/icml_2006.pdf">CTC</a> loss.</p>
<p>We use <a class="reference external" href="https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html">CTC FORCED ALIGNMENT API TUTORIAL</a>
from <a class="reference external" href="https://github.com/pytorch/audio">torchaudio</a> as a reference in this section.</p>
<p>Different from <a class="reference external" href="https://github.com/pytorch/audio">torchaudio</a>, we use an <code class="docutils literal notranslate"><span class="pre">FST</span></code>-based approach.</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="diff.html">Two approaches</a><ul>
<li class="toctree-l2"><a class="reference internal" href="diff.html#differences-between-the-two-approaches">Differences between the two approaches</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="kaldi-based.html">Kaldi-based forced alignment</a><ul>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#prepare-the-environment">Prepare the environment</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#get-the-test-data">Get the test data</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#compute-log-probs">Compute log_probs</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#create-token2id-and-id2token">Create token2id and id2token</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#create-word2id-and-id2word">Create word2id and id2word</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#generate-lexicon-related-files">Generate lexicon-related files</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#convert-transcript-to-an-fst-graph">Convert transcript to an FST graph</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#force-aligner">Force aligner</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#segment-each-word-using-the-computed-alignments">Segment each word using the computed alignments</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html#summary">Summary</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="k2-based.html">k2-based forced alignment</a></li>
</ul>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../model-export/export-ncnn-lstm.html" class="btn btn-neutral float-left" title="Export LSTM transducer models to ncnn" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="diff.html" class="btn btn-neutral float-right" title="Two approaches" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2021, icefall development team.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -0,0 +1,133 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>k2-based forced alignment &mdash; icefall 0.1 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=e031e9a9"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Recipes" href="../recipes/index.html" />
<link rel="prev" title="Kaldi-based forced alignment" href="kaldi-based.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
icefall
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../for-dummies/index.html">Icefall for dummies tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">FST-based forced alignment</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="diff.html">Two approaches</a></li>
<li class="toctree-l2"><a class="reference internal" href="kaldi-based.html">Kaldi-based forced alignment</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">k2-based forced alignment</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../huggingface/index.html">Huggingface</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../decoding-with-langugage-models/index.html">Decoding with language models</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">icefall</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">FST-based forced alignment</a></li>
<li class="breadcrumb-item active">k2-based forced alignment</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/k2-fsa/icefall/blob/master/docs/source/fst-based-forced-alignment/k2-based.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="k2-based-forced-alignment">
<h1>k2-based forced alignment<a class="headerlink" href="#k2-based-forced-alignment" title="Permalink to this heading"></a></h1>
<p>TODO(fangjun)</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="kaldi-based.html" class="btn btn-neutral float-left" title="Kaldi-based forced alignment" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../recipes/index.html" class="btn btn-neutral float-right" title="Recipes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2021, icefall development team.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -0,0 +1,816 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Kaldi-based forced alignment &mdash; icefall 0.1 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=e031e9a9"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="k2-based forced alignment" href="k2-based.html" />
<link rel="prev" title="Two approaches" href="diff.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
icefall
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../for-dummies/index.html">Icefall for dummies tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">FST-based forced alignment</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="diff.html">Two approaches</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Kaldi-based forced alignment</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#prepare-the-environment">Prepare the environment</a></li>
<li class="toctree-l3"><a class="reference internal" href="#get-the-test-data">Get the test data</a></li>
<li class="toctree-l3"><a class="reference internal" href="#compute-log-probs">Compute log_probs</a></li>
<li class="toctree-l3"><a class="reference internal" href="#create-token2id-and-id2token">Create token2id and id2token</a></li>
<li class="toctree-l3"><a class="reference internal" href="#create-word2id-and-id2word">Create word2id and id2word</a></li>
<li class="toctree-l3"><a class="reference internal" href="#generate-lexicon-related-files">Generate lexicon-related files</a></li>
<li class="toctree-l3"><a class="reference internal" href="#convert-transcript-to-an-fst-graph">Convert transcript to an FST graph</a></li>
<li class="toctree-l3"><a class="reference internal" href="#force-aligner">Force aligner</a></li>
<li class="toctree-l3"><a class="reference internal" href="#segment-each-word-using-the-computed-alignments">Segment each word using the computed alignments</a></li>
<li class="toctree-l3"><a class="reference internal" href="#summary">Summary</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="k2-based.html">k2-based forced alignment</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../huggingface/index.html">Huggingface</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../decoding-with-langugage-models/index.html">Decoding with language models</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">icefall</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">FST-based forced alignment</a></li>
<li class="breadcrumb-item active">Kaldi-based forced alignment</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/k2-fsa/icefall/blob/master/docs/source/fst-based-forced-alignment/kaldi-based.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="kaldi-based-forced-alignment">
<h1>Kaldi-based forced alignment<a class="headerlink" href="#kaldi-based-forced-alignment" title="Permalink to this heading"></a></h1>
<p>This section describes in detail how to use <a class="reference external" href="https://github.com/k2-fsa/kaldi-decoder">kaldi-decoder</a>
for <strong>FST-based</strong> <code class="docutils literal notranslate"><span class="pre">forced</span> <span class="pre">alignment</span></code> with models trained by <a class="reference external" href="https://www.cs.toronto.edu/~graves/icml_2006.pdf">CTC</a> loss.</p>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p>We have a colab notebook walking you through this section step by step.</p>
<p><a class="reference external" href="https://github.com/k2-fsa/colab/blob/master/icefall/ctc_forced_alignment_fst_based_kaldi.ipynb"><img alt="kaldi-based forced alignment colab notebook" src="https://colab.research.google.com/assets/colab-badge.svg" /></a></p>
</div>
<section id="prepare-the-environment">
<h2>Prepare the environment<a class="headerlink" href="#prepare-the-environment" title="Permalink to this heading"></a></h2>
<p>Before you continue, make sure you have setup <a class="reference external" href="https://github.com/k2-fsa/icefall">icefall</a> by following <a class="reference internal" href="../installation/index.html#install-icefall"><span class="std std-ref">Installation</span></a>.</p>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p>You dont need to install <a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a>. We will <code class="docutils literal notranslate"><span class="pre">NOT</span></code> use <a class="reference external" href="https://github.com/kaldi-asr/kaldi">Kaldi</a> below.</p>
</div>
</section>
<section id="get-the-test-data">
<h2>Get the test data<a class="headerlink" href="#get-the-test-data" title="Permalink to this heading"></a></h2>
<p>We use the test wave
from <a class="reference external" href="https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html">CTC FORCED ALIGNMENT API TUTORIAL</a></p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">torchaudio</span>
<span class="c1"># Download test wave</span>
<span class="n">speech_file</span> <span class="o">=</span> <span class="n">torchaudio</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">download_asset</span><span class="p">(</span><span class="s2">&quot;tutorial-assets/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">speech_file</span><span class="p">)</span>
<span class="n">waveform</span><span class="p">,</span> <span class="n">sr</span> <span class="o">=</span> <span class="n">torchaudio</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">speech_file</span><span class="p">)</span>
<span class="n">transcript</span> <span class="o">=</span> <span class="s2">&quot;i had that curiosity beside me at this moment&quot;</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="n">waveform</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">sr</span><span class="p">)</span>
<span class="k">assert</span> <span class="n">waveform</span><span class="o">.</span><span class="n">ndim</span> <span class="o">==</span> <span class="mi">2</span>
<span class="k">assert</span> <span class="n">waveform</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span>
<span class="k">assert</span> <span class="n">sr</span> <span class="o">==</span> <span class="mi">16000</span>
</pre></div>
</div>
<p>The test wave is downloaded to:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$HOME/.cache/torch/hub/torchaudio/tutorial-assets/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav
</pre></div>
</div>
<table>
<tr>
<th>Wave filename</th>
<th>Content</th>
<th>Text</th>
</tr>
<tr>
<td>Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav</td>
<td>
<audio title="Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
<td>
i had that curiosity beside me at this moment
</td>
</tr>
</table><p>We use the test model
from <a class="reference external" href="https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html">CTC FORCED ALIGNMENT API TUTORIAL</a></p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">torch</span>
<span class="n">bundle</span> <span class="o">=</span> <span class="n">torchaudio</span><span class="o">.</span><span class="n">pipelines</span><span class="o">.</span><span class="n">MMS_FA</span>
<span class="n">device</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s2">&quot;cuda&quot;</span> <span class="k">if</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">()</span> <span class="k">else</span> <span class="s2">&quot;cpu&quot;</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">bundle</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">with_star</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
</pre></div>
</div>
<p>The model is downloaded to:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$HOME/.cache/torch/hub/checkpoints/model.pt
</pre></div>
</div>
</section>
<section id="compute-log-probs">
<h2>Compute log_probs<a class="headerlink" href="#compute-log-probs" title="Permalink to this heading"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>with<span class="w"> </span>torch.inference_mode<span class="o">()</span>:
<span class="w"> </span>emission,<span class="w"> </span><span class="nv">_</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>model<span class="o">(</span>waveform.to<span class="o">(</span>device<span class="o">))</span>
<span class="w"> </span>print<span class="o">(</span>emission.shape<span class="o">)</span>
</pre></div>
</div>
<p>It should print:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">torch</span><span class="o">.</span><span class="n">Size</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">169</span><span class="p">,</span> <span class="mi">28</span><span class="p">])</span>
</pre></div>
</div>
</section>
<section id="create-token2id-and-id2token">
<h2>Create token2id and id2token<a class="headerlink" href="#create-token2id-and-id2token" title="Permalink to this heading"></a></h2>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">token2id</span> <span class="o">=</span> <span class="n">bundle</span><span class="o">.</span><span class="n">get_dict</span><span class="p">(</span><span class="n">star</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="n">id2token</span> <span class="o">=</span> <span class="p">{</span><span class="n">i</span><span class="p">:</span><span class="n">t</span> <span class="k">for</span> <span class="n">t</span><span class="p">,</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">token2id</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
<span class="n">token2id</span><span class="p">[</span><span class="s2">&quot;&lt;eps&gt;&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">del</span> <span class="n">token2id</span><span class="p">[</span><span class="s2">&quot;-&quot;</span><span class="p">]</span>
</pre></div>
</div>
</section>
<section id="create-word2id-and-id2word">
<h2>Create word2id and id2word<a class="headerlink" href="#create-word2id-and-id2word" title="Permalink to this heading"></a></h2>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">words</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">transcript</span><span class="p">))</span>
<span class="n">word2id</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
<span class="n">word2id</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">w</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">words</span><span class="p">):</span>
<span class="n">word2id</span><span class="p">[</span><span class="n">w</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span>
<span class="n">id2word</span> <span class="o">=</span> <span class="p">{</span><span class="n">i</span><span class="p">:</span><span class="n">w</span> <span class="k">for</span> <span class="n">w</span><span class="p">,</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">word2id</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
</pre></div>
</div>
<p>Note that we only use words from the transcript of the test wave.</p>
</section>
<section id="generate-lexicon-related-files">
<h2>Generate lexicon-related files<a class="headerlink" href="#generate-lexicon-related-files" title="Permalink to this heading"></a></h2>
<p>We use the code below to generate the following 4 files:</p>
<blockquote>
<div><ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">lexicon.txt</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">tokens.txt</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">words.txt</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">lexicon_disambig.txt</span></code></p></li>
</ul>
</div></blockquote>
<div class="admonition caution">
<p class="admonition-title">Caution</p>
<p><code class="docutils literal notranslate"><span class="pre">words.txt</span></code> contains only words from the transcript of the test wave.</p>
</div>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">prepare_lang</span> <span class="kn">import</span> <span class="n">add_disambig_symbols</span>
<span class="n">lexicon</span> <span class="o">=</span> <span class="p">[(</span><span class="n">w</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">w</span><span class="p">))</span> <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">word2id</span> <span class="k">if</span> <span class="n">w</span> <span class="o">!=</span> <span class="s2">&quot;eps&quot;</span><span class="p">]</span>
<span class="n">lexicon_disambig</span><span class="p">,</span> <span class="n">max_disambig_id</span> <span class="o">=</span> <span class="n">add_disambig_symbols</span><span class="p">(</span><span class="n">lexicon</span><span class="p">)</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;lexicon.txt&#39;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="k">for</span> <span class="n">w</span><span class="p">,</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">lexicon</span><span class="p">:</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">w</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;lexicon_disambig.txt&#39;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="k">for</span> <span class="n">w</span><span class="p">,</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">lexicon_disambig</span><span class="p">:</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">w</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;tokens.txt&#39;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="k">for</span> <span class="n">t</span><span class="p">,</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">token2id</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="k">if</span> <span class="n">t</span> <span class="o">==</span> <span class="s1">&#39;-&#39;</span><span class="p">:</span>
<span class="n">t</span> <span class="o">=</span> <span class="s2">&quot;&lt;eps&gt;&quot;</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">t</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_disambig_id</span> <span class="o">+</span> <span class="mi">2</span><span class="p">):</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;#</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">token2id</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">k</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;words.txt&#39;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="k">for</span> <span class="n">w</span><span class="p">,</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">word2id</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">w</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;#0 </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">word2id</span><span class="p">)</span><span class="si">}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>To give you an idea about what the generated files look like:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">head</span> <span class="o">-</span><span class="n">n</span> <span class="mi">50</span> <span class="n">lexicon</span><span class="o">.</span><span class="n">txt</span> <span class="n">lexicon_disambig</span><span class="o">.</span><span class="n">txt</span> <span class="n">tokens</span><span class="o">.</span><span class="n">txt</span> <span class="n">words</span><span class="o">.</span><span class="n">txt</span>
</pre></div>
</div>
<p>prints:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">==&gt;</span> <span class="n">lexicon</span><span class="o">.</span><span class="n">txt</span> <span class="o">&lt;==</span>
<span class="n">moment</span> <span class="n">m</span> <span class="n">o</span> <span class="n">m</span> <span class="n">e</span> <span class="n">n</span> <span class="n">t</span>
<span class="n">beside</span> <span class="n">b</span> <span class="n">e</span> <span class="n">s</span> <span class="n">i</span> <span class="n">d</span> <span class="n">e</span>
<span class="n">i</span> <span class="n">i</span>
<span class="n">this</span> <span class="n">t</span> <span class="n">h</span> <span class="n">i</span> <span class="n">s</span>
<span class="n">curiosity</span> <span class="n">c</span> <span class="n">u</span> <span class="n">r</span> <span class="n">i</span> <span class="n">o</span> <span class="n">s</span> <span class="n">i</span> <span class="n">t</span> <span class="n">y</span>
<span class="n">had</span> <span class="n">h</span> <span class="n">a</span> <span class="n">d</span>
<span class="n">that</span> <span class="n">t</span> <span class="n">h</span> <span class="n">a</span> <span class="n">t</span>
<span class="n">at</span> <span class="n">a</span> <span class="n">t</span>
<span class="n">me</span> <span class="n">m</span> <span class="n">e</span>
<span class="o">==&gt;</span> <span class="n">lexicon_disambig</span><span class="o">.</span><span class="n">txt</span> <span class="o">&lt;==</span>
<span class="n">moment</span> <span class="n">m</span> <span class="n">o</span> <span class="n">m</span> <span class="n">e</span> <span class="n">n</span> <span class="n">t</span>
<span class="n">beside</span> <span class="n">b</span> <span class="n">e</span> <span class="n">s</span> <span class="n">i</span> <span class="n">d</span> <span class="n">e</span>
<span class="n">i</span> <span class="n">i</span>
<span class="n">this</span> <span class="n">t</span> <span class="n">h</span> <span class="n">i</span> <span class="n">s</span>
<span class="n">curiosity</span> <span class="n">c</span> <span class="n">u</span> <span class="n">r</span> <span class="n">i</span> <span class="n">o</span> <span class="n">s</span> <span class="n">i</span> <span class="n">t</span> <span class="n">y</span>
<span class="n">had</span> <span class="n">h</span> <span class="n">a</span> <span class="n">d</span>
<span class="n">that</span> <span class="n">t</span> <span class="n">h</span> <span class="n">a</span> <span class="n">t</span>
<span class="n">at</span> <span class="n">a</span> <span class="n">t</span>
<span class="n">me</span> <span class="n">m</span> <span class="n">e</span>
<span class="o">==&gt;</span> <span class="n">tokens</span><span class="o">.</span><span class="n">txt</span> <span class="o">&lt;==</span>
<span class="n">a</span> <span class="mi">1</span>
<span class="n">i</span> <span class="mi">2</span>
<span class="n">e</span> <span class="mi">3</span>
<span class="n">n</span> <span class="mi">4</span>
<span class="n">o</span> <span class="mi">5</span>
<span class="n">u</span> <span class="mi">6</span>
<span class="n">t</span> <span class="mi">7</span>
<span class="n">s</span> <span class="mi">8</span>
<span class="n">r</span> <span class="mi">9</span>
<span class="n">m</span> <span class="mi">10</span>
<span class="n">k</span> <span class="mi">11</span>
<span class="n">l</span> <span class="mi">12</span>
<span class="n">d</span> <span class="mi">13</span>
<span class="n">g</span> <span class="mi">14</span>
<span class="n">h</span> <span class="mi">15</span>
<span class="n">y</span> <span class="mi">16</span>
<span class="n">b</span> <span class="mi">17</span>
<span class="n">p</span> <span class="mi">18</span>
<span class="n">w</span> <span class="mi">19</span>
<span class="n">c</span> <span class="mi">20</span>
<span class="n">v</span> <span class="mi">21</span>
<span class="n">j</span> <span class="mi">22</span>
<span class="n">z</span> <span class="mi">23</span>
<span class="n">f</span> <span class="mi">24</span>
<span class="s1">&#39; 25</span>
<span class="n">q</span> <span class="mi">26</span>
<span class="n">x</span> <span class="mi">27</span>
<span class="o">&lt;</span><span class="n">eps</span><span class="o">&gt;</span> <span class="mi">0</span>
<span class="c1">#0 28</span>
<span class="c1">#1 29</span>
<span class="o">==&gt;</span> <span class="n">words</span><span class="o">.</span><span class="n">txt</span> <span class="o">&lt;==</span>
<span class="n">eps</span> <span class="mi">0</span>
<span class="n">moment</span> <span class="mi">1</span>
<span class="n">beside</span> <span class="mi">2</span>
<span class="n">i</span> <span class="mi">3</span>
<span class="n">this</span> <span class="mi">4</span>
<span class="n">curiosity</span> <span class="mi">5</span>
<span class="n">had</span> <span class="mi">6</span>
<span class="n">that</span> <span class="mi">7</span>
<span class="n">at</span> <span class="mi">8</span>
<span class="n">me</span> <span class="mi">9</span>
<span class="c1">#0 10</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This test model uses characters as modeling unit. If you use other types of
modeling unit, the same code can be used without any change.</p>
</div>
</section>
<section id="convert-transcript-to-an-fst-graph">
<h2>Convert transcript to an FST graph<a class="headerlink" href="#convert-transcript-to-an-fst-graph" title="Permalink to this heading"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>egs/librispeech/ASR/local/prepare_lang_fst.py<span class="w"> </span>--lang-dir<span class="w"> </span>./
</pre></div>
</div>
<p>The above command should generate two files <code class="docutils literal notranslate"><span class="pre">H.fst</span></code> and <code class="docutils literal notranslate"><span class="pre">HL.fst</span></code>. We will
use <code class="docutils literal notranslate"><span class="pre">HL.fst</span></code> below:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span> <span class="mi">1</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">13</span><span class="n">K</span> <span class="n">Jun</span> <span class="mi">12</span> <span class="mi">08</span><span class="p">:</span><span class="mi">28</span> <span class="n">H</span><span class="o">.</span><span class="n">fst</span>
<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span> <span class="mi">1</span> <span class="n">root</span> <span class="n">root</span> <span class="mf">3.7</span><span class="n">K</span> <span class="n">Jun</span> <span class="mi">12</span> <span class="mi">08</span><span class="p">:</span><span class="mi">28</span> <span class="n">HL</span><span class="o">.</span><span class="n">fst</span>
</pre></div>
</div>
</section>
<section id="force-aligner">
<h2>Force aligner<a class="headerlink" href="#force-aligner" title="Permalink to this heading"></a></h2>
<p>Now, everything is ready. We can use the following code to get forced alignments.</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">kaldi_decoder</span> <span class="kn">import</span> <span class="n">DecodableCtc</span><span class="p">,</span> <span class="n">FasterDecoder</span><span class="p">,</span> <span class="n">FasterDecoderOptions</span>
<span class="kn">import</span> <span class="nn">kaldifst</span>
<span class="k">def</span> <span class="nf">force_align</span><span class="p">():</span>
<span class="n">HL</span> <span class="o">=</span> <span class="n">kaldifst</span><span class="o">.</span><span class="n">StdVectorFst</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="s2">&quot;./HL.fst&quot;</span><span class="p">)</span>
<span class="n">decodable</span> <span class="o">=</span> <span class="n">DecodableCtc</span><span class="p">(</span><span class="n">emission</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">numpy</span><span class="p">())</span>
<span class="n">decoder_opts</span> <span class="o">=</span> <span class="n">FasterDecoderOptions</span><span class="p">(</span><span class="n">max_active</span><span class="o">=</span><span class="mi">3000</span><span class="p">)</span>
<span class="n">decoder</span> <span class="o">=</span> <span class="n">FasterDecoder</span><span class="p">(</span><span class="n">HL</span><span class="p">,</span> <span class="n">decoder_opts</span><span class="p">)</span>
<span class="n">decoder</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">decodable</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">decoder</span><span class="o">.</span><span class="n">reached_final</span><span class="p">():</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;failed to decode xxx&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">ok</span><span class="p">,</span> <span class="n">best_path</span> <span class="o">=</span> <span class="n">decoder</span><span class="o">.</span><span class="n">get_best_path</span><span class="p">()</span>
<span class="p">(</span>
<span class="n">ok</span><span class="p">,</span>
<span class="n">isymbols_out</span><span class="p">,</span>
<span class="n">osymbols_out</span><span class="p">,</span>
<span class="n">total_weight</span><span class="p">,</span>
<span class="p">)</span> <span class="o">=</span> <span class="n">kaldifst</span><span class="o">.</span><span class="n">get_linear_symbol_sequence</span><span class="p">(</span><span class="n">best_path</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">ok</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;failed to get linear symbol sequence for xxx&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="c1"># We need to use i-1 here since we have incremented tokens during</span>
<span class="c1"># HL construction</span>
<span class="n">alignment</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">isymbols_out</span><span class="p">]</span>
<span class="k">return</span> <span class="n">alignment</span>
<span class="n">alignment</span> <span class="o">=</span> <span class="n">force_align</span><span class="p">()</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">a</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">alignment</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">id2token</span><span class="p">[</span><span class="n">a</span><span class="p">])</span>
</pre></div>
</div>
<p>The output should be identical to
<a class="reference external" href="https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html#frame-level-alignments">https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html#frame-level-alignments</a>.</p>
<p>For ease of reference, we list the output below:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span> <span class="o">-</span>
<span class="mi">1</span> <span class="o">-</span>
<span class="mi">2</span> <span class="o">-</span>
<span class="mi">3</span> <span class="o">-</span>
<span class="mi">4</span> <span class="o">-</span>
<span class="mi">5</span> <span class="o">-</span>
<span class="mi">6</span> <span class="o">-</span>
<span class="mi">7</span> <span class="o">-</span>
<span class="mi">8</span> <span class="o">-</span>
<span class="mi">9</span> <span class="o">-</span>
<span class="mi">10</span> <span class="o">-</span>
<span class="mi">11</span> <span class="o">-</span>
<span class="mi">12</span> <span class="o">-</span>
<span class="mi">13</span> <span class="o">-</span>
<span class="mi">14</span> <span class="o">-</span>
<span class="mi">15</span> <span class="o">-</span>
<span class="mi">16</span> <span class="o">-</span>
<span class="mi">17</span> <span class="o">-</span>
<span class="mi">18</span> <span class="o">-</span>
<span class="mi">19</span> <span class="o">-</span>
<span class="mi">20</span> <span class="o">-</span>
<span class="mi">21</span> <span class="o">-</span>
<span class="mi">22</span> <span class="o">-</span>
<span class="mi">23</span> <span class="o">-</span>
<span class="mi">24</span> <span class="o">-</span>
<span class="mi">25</span> <span class="o">-</span>
<span class="mi">26</span> <span class="o">-</span>
<span class="mi">27</span> <span class="o">-</span>
<span class="mi">28</span> <span class="o">-</span>
<span class="mi">29</span> <span class="o">-</span>
<span class="mi">30</span> <span class="o">-</span>
<span class="mi">31</span> <span class="o">-</span>
<span class="mi">32</span> <span class="n">i</span>
<span class="mi">33</span> <span class="o">-</span>
<span class="mi">34</span> <span class="o">-</span>
<span class="mi">35</span> <span class="n">h</span>
<span class="mi">36</span> <span class="n">h</span>
<span class="mi">37</span> <span class="n">a</span>
<span class="mi">38</span> <span class="o">-</span>
<span class="mi">39</span> <span class="o">-</span>
<span class="mi">40</span> <span class="o">-</span>
<span class="mi">41</span> <span class="n">d</span>
<span class="mi">42</span> <span class="o">-</span>
<span class="mi">43</span> <span class="o">-</span>
<span class="mi">44</span> <span class="n">t</span>
<span class="mi">45</span> <span class="n">h</span>
<span class="mi">46</span> <span class="o">-</span>
<span class="mi">47</span> <span class="n">a</span>
<span class="mi">48</span> <span class="o">-</span>
<span class="mi">49</span> <span class="o">-</span>
<span class="mi">50</span> <span class="n">t</span>
<span class="mi">51</span> <span class="o">-</span>
<span class="mi">52</span> <span class="o">-</span>
<span class="mi">53</span> <span class="o">-</span>
<span class="mi">54</span> <span class="n">c</span>
<span class="mi">55</span> <span class="o">-</span>
<span class="mi">56</span> <span class="o">-</span>
<span class="mi">57</span> <span class="o">-</span>
<span class="mi">58</span> <span class="n">u</span>
<span class="mi">59</span> <span class="n">u</span>
<span class="mi">60</span> <span class="o">-</span>
<span class="mi">61</span> <span class="o">-</span>
<span class="mi">62</span> <span class="o">-</span>
<span class="mi">63</span> <span class="n">r</span>
<span class="mi">64</span> <span class="o">-</span>
<span class="mi">65</span> <span class="n">i</span>
<span class="mi">66</span> <span class="o">-</span>
<span class="mi">67</span> <span class="o">-</span>
<span class="mi">68</span> <span class="o">-</span>
<span class="mi">69</span> <span class="o">-</span>
<span class="mi">70</span> <span class="o">-</span>
<span class="mi">71</span> <span class="o">-</span>
<span class="mi">72</span> <span class="n">o</span>
<span class="mi">73</span> <span class="o">-</span>
<span class="mi">74</span> <span class="o">-</span>
<span class="mi">75</span> <span class="o">-</span>
<span class="mi">76</span> <span class="o">-</span>
<span class="mi">77</span> <span class="o">-</span>
<span class="mi">78</span> <span class="o">-</span>
<span class="mi">79</span> <span class="n">s</span>
<span class="mi">80</span> <span class="o">-</span>
<span class="mi">81</span> <span class="o">-</span>
<span class="mi">82</span> <span class="o">-</span>
<span class="mi">83</span> <span class="n">i</span>
<span class="mi">84</span> <span class="o">-</span>
<span class="mi">85</span> <span class="n">t</span>
<span class="mi">86</span> <span class="o">-</span>
<span class="mi">87</span> <span class="o">-</span>
<span class="mi">88</span> <span class="n">y</span>
<span class="mi">89</span> <span class="o">-</span>
<span class="mi">90</span> <span class="o">-</span>
<span class="mi">91</span> <span class="o">-</span>
<span class="mi">92</span> <span class="o">-</span>
<span class="mi">93</span> <span class="n">b</span>
<span class="mi">94</span> <span class="o">-</span>
<span class="mi">95</span> <span class="n">e</span>
<span class="mi">96</span> <span class="o">-</span>
<span class="mi">97</span> <span class="o">-</span>
<span class="mi">98</span> <span class="o">-</span>
<span class="mi">99</span> <span class="o">-</span>
<span class="mi">100</span> <span class="o">-</span>
<span class="mi">101</span> <span class="n">s</span>
<span class="mi">102</span> <span class="o">-</span>
<span class="mi">103</span> <span class="o">-</span>
<span class="mi">104</span> <span class="o">-</span>
<span class="mi">105</span> <span class="o">-</span>
<span class="mi">106</span> <span class="o">-</span>
<span class="mi">107</span> <span class="o">-</span>
<span class="mi">108</span> <span class="o">-</span>
<span class="mi">109</span> <span class="o">-</span>
<span class="mi">110</span> <span class="n">i</span>
<span class="mi">111</span> <span class="o">-</span>
<span class="mi">112</span> <span class="o">-</span>
<span class="mi">113</span> <span class="n">d</span>
<span class="mi">114</span> <span class="n">e</span>
<span class="mi">115</span> <span class="o">-</span>
<span class="mi">116</span> <span class="n">m</span>
<span class="mi">117</span> <span class="o">-</span>
<span class="mi">118</span> <span class="o">-</span>
<span class="mi">119</span> <span class="n">e</span>
<span class="mi">120</span> <span class="o">-</span>
<span class="mi">121</span> <span class="o">-</span>
<span class="mi">122</span> <span class="o">-</span>
<span class="mi">123</span> <span class="o">-</span>
<span class="mi">124</span> <span class="n">a</span>
<span class="mi">125</span> <span class="o">-</span>
<span class="mi">126</span> <span class="o">-</span>
<span class="mi">127</span> <span class="n">t</span>
<span class="mi">128</span> <span class="o">-</span>
<span class="mi">129</span> <span class="n">t</span>
<span class="mi">130</span> <span class="n">h</span>
<span class="mi">131</span> <span class="o">-</span>
<span class="mi">132</span> <span class="n">i</span>
<span class="mi">133</span> <span class="o">-</span>
<span class="mi">134</span> <span class="o">-</span>
<span class="mi">135</span> <span class="o">-</span>
<span class="mi">136</span> <span class="n">s</span>
<span class="mi">137</span> <span class="o">-</span>
<span class="mi">138</span> <span class="o">-</span>
<span class="mi">139</span> <span class="o">-</span>
<span class="mi">140</span> <span class="o">-</span>
<span class="mi">141</span> <span class="n">m</span>
<span class="mi">142</span> <span class="o">-</span>
<span class="mi">143</span> <span class="o">-</span>
<span class="mi">144</span> <span class="n">o</span>
<span class="mi">145</span> <span class="o">-</span>
<span class="mi">146</span> <span class="o">-</span>
<span class="mi">147</span> <span class="o">-</span>
<span class="mi">148</span> <span class="n">m</span>
<span class="mi">149</span> <span class="o">-</span>
<span class="mi">150</span> <span class="o">-</span>
<span class="mi">151</span> <span class="n">e</span>
<span class="mi">152</span> <span class="o">-</span>
<span class="mi">153</span> <span class="n">n</span>
<span class="mi">154</span> <span class="o">-</span>
<span class="mi">155</span> <span class="n">t</span>
<span class="mi">156</span> <span class="o">-</span>
<span class="mi">157</span> <span class="o">-</span>
<span class="mi">158</span> <span class="o">-</span>
<span class="mi">159</span> <span class="o">-</span>
<span class="mi">160</span> <span class="o">-</span>
<span class="mi">161</span> <span class="o">-</span>
<span class="mi">162</span> <span class="o">-</span>
<span class="mi">163</span> <span class="o">-</span>
<span class="mi">164</span> <span class="o">-</span>
<span class="mi">165</span> <span class="o">-</span>
<span class="mi">166</span> <span class="o">-</span>
<span class="mi">167</span> <span class="o">-</span>
<span class="mi">168</span> <span class="o">-</span>
</pre></div>
</div>
<p>To merge tokens, we use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">icefall.ctc</span> <span class="kn">import</span> <span class="n">merge_tokens</span>
<span class="n">token_spans</span> <span class="o">=</span> <span class="n">merge_tokens</span><span class="p">(</span><span class="n">alignment</span><span class="p">)</span>
<span class="k">for</span> <span class="n">span</span> <span class="ow">in</span> <span class="n">token_spans</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">id2token</span><span class="p">[</span><span class="n">span</span><span class="o">.</span><span class="n">token</span><span class="p">],</span> <span class="n">span</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="n">span</span><span class="o">.</span><span class="n">end</span><span class="p">)</span>
</pre></div>
</div>
<p>The output is given below:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">i</span> <span class="mi">32</span> <span class="mi">33</span>
<span class="n">h</span> <span class="mi">35</span> <span class="mi">37</span>
<span class="n">a</span> <span class="mi">37</span> <span class="mi">38</span>
<span class="n">d</span> <span class="mi">41</span> <span class="mi">42</span>
<span class="n">t</span> <span class="mi">44</span> <span class="mi">45</span>
<span class="n">h</span> <span class="mi">45</span> <span class="mi">46</span>
<span class="n">a</span> <span class="mi">47</span> <span class="mi">48</span>
<span class="n">t</span> <span class="mi">50</span> <span class="mi">51</span>
<span class="n">c</span> <span class="mi">54</span> <span class="mi">55</span>
<span class="n">u</span> <span class="mi">58</span> <span class="mi">60</span>
<span class="n">r</span> <span class="mi">63</span> <span class="mi">64</span>
<span class="n">i</span> <span class="mi">65</span> <span class="mi">66</span>
<span class="n">o</span> <span class="mi">72</span> <span class="mi">73</span>
<span class="n">s</span> <span class="mi">79</span> <span class="mi">80</span>
<span class="n">i</span> <span class="mi">83</span> <span class="mi">84</span>
<span class="n">t</span> <span class="mi">85</span> <span class="mi">86</span>
<span class="n">y</span> <span class="mi">88</span> <span class="mi">89</span>
<span class="n">b</span> <span class="mi">93</span> <span class="mi">94</span>
<span class="n">e</span> <span class="mi">95</span> <span class="mi">96</span>
<span class="n">s</span> <span class="mi">101</span> <span class="mi">102</span>
<span class="n">i</span> <span class="mi">110</span> <span class="mi">111</span>
<span class="n">d</span> <span class="mi">113</span> <span class="mi">114</span>
<span class="n">e</span> <span class="mi">114</span> <span class="mi">115</span>
<span class="n">m</span> <span class="mi">116</span> <span class="mi">117</span>
<span class="n">e</span> <span class="mi">119</span> <span class="mi">120</span>
<span class="n">a</span> <span class="mi">124</span> <span class="mi">125</span>
<span class="n">t</span> <span class="mi">127</span> <span class="mi">128</span>
<span class="n">t</span> <span class="mi">129</span> <span class="mi">130</span>
<span class="n">h</span> <span class="mi">130</span> <span class="mi">131</span>
<span class="n">i</span> <span class="mi">132</span> <span class="mi">133</span>
<span class="n">s</span> <span class="mi">136</span> <span class="mi">137</span>
<span class="n">m</span> <span class="mi">141</span> <span class="mi">142</span>
<span class="n">o</span> <span class="mi">144</span> <span class="mi">145</span>
<span class="n">m</span> <span class="mi">148</span> <span class="mi">149</span>
<span class="n">e</span> <span class="mi">151</span> <span class="mi">152</span>
<span class="n">n</span> <span class="mi">153</span> <span class="mi">154</span>
<span class="n">t</span> <span class="mi">155</span> <span class="mi">156</span>
</pre></div>
</div>
<p>All of the code below is copied and modified
from <a class="reference external" href="https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html">https://pytorch.org/audio/main/tutorials/ctc_forced_alignment_api_tutorial.html</a>.</p>
</section>
<section id="segment-each-word-using-the-computed-alignments">
<h2>Segment each word using the computed alignments<a class="headerlink" href="#segment-each-word-using-the-computed-alignments" title="Permalink to this heading"></a></h2>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">unflatten</span><span class="p">(</span><span class="n">list_</span><span class="p">,</span> <span class="n">lengths</span><span class="p">):</span>
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">list_</span><span class="p">)</span> <span class="o">==</span> <span class="nb">sum</span><span class="p">(</span><span class="n">lengths</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">ret</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">lengths</span><span class="p">:</span>
<span class="n">ret</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">list_</span><span class="p">[</span><span class="n">i</span> <span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="n">l</span><span class="p">])</span>
<span class="n">i</span> <span class="o">+=</span> <span class="n">l</span>
<span class="k">return</span> <span class="n">ret</span>
<span class="n">word_spans</span> <span class="o">=</span> <span class="n">unflatten</span><span class="p">(</span><span class="n">token_spans</span><span class="p">,</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">word</span><span class="p">)</span> <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">transcript</span><span class="p">])</span>
<span class="nb">print</span><span class="p">(</span><span class="n">word_spans</span><span class="p">)</span>
</pre></div>
</div>
<p>The output is:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">33</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">35</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">37</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">37</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">38</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">13</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">41</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">42</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">44</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">45</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">45</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">46</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">47</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">48</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">51</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">54</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">55</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">58</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">60</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">63</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">64</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">65</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">66</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">72</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">73</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">79</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">80</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">83</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">84</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">85</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">86</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">88</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">89</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">17</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">93</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">94</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">95</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">96</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">101</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">102</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">110</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">111</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">13</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">113</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">114</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">114</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">115</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">116</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">117</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">119</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">120</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">124</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">125</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">127</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">128</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">129</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">130</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">130</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">131</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">132</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">133</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">136</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">137</span><span class="p">)],</span>
<span class="p">[</span><span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">141</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">142</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">144</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">145</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">148</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">149</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">151</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">152</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">153</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">154</span><span class="p">),</span> <span class="n">TokenSpan</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="mi">155</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">156</span><span class="p">)]</span>
<span class="p">]</span>
</pre></div>
</div>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">spans</span><span class="p">,</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">,</span> <span class="n">sample_rate</span><span class="o">=</span><span class="n">bundle</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">):</span>
<span class="n">ratio</span> <span class="o">=</span> <span class="n">waveform</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">num_frames</span>
<span class="n">x0</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">ratio</span> <span class="o">*</span> <span class="n">spans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="p">)</span>
<span class="n">x1</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">ratio</span> <span class="o">*</span> <span class="n">spans</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">end</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">transcript</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">x0</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">sample_rate</span><span class="si">:</span><span class="s2">.3f</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">x1</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">sample_rate</span><span class="si">:</span><span class="s2">.3f</span><span class="si">}</span><span class="s2"> sec&quot;</span><span class="p">)</span>
<span class="n">segment</span> <span class="o">=</span> <span class="n">waveform</span><span class="p">[:,</span> <span class="n">x0</span><span class="p">:</span><span class="n">x1</span><span class="p">]</span>
<span class="k">return</span> <span class="n">IPython</span><span class="o">.</span><span class="n">display</span><span class="o">.</span><span class="n">Audio</span><span class="p">(</span><span class="n">segment</span><span class="o">.</span><span class="n">numpy</span><span class="p">(),</span> <span class="n">rate</span><span class="o">=</span><span class="n">sample_rate</span><span class="p">)</span>
<span class="n">num_frames</span> <span class="o">=</span> <span class="n">emission</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">5</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">6</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">6</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">7</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">7</span><span class="p">])</span>
<span class="n">preview_word</span><span class="p">(</span><span class="n">waveform</span><span class="p">,</span> <span class="n">word_spans</span><span class="p">[</span><span class="mi">8</span><span class="p">],</span> <span class="n">num_frames</span><span class="p">,</span> <span class="n">transcript</span><span class="p">[</span><span class="mi">8</span><span class="p">])</span>
</pre></div>
</div>
<p>The segmented wave of each word along with its time stamp is given below:</p>
<table>
<tr>
<th>Word</th>
<th>Time</th>
<th>Wave</th>
</tr>
<tr>
<td>i</td>
<td>0.644 - 0.664 sec</td>
<td>
<audio title="i.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/i.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>had</td>
<td>0.704 - 0.845 sec</td>
<td>
<audio title="had.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/had.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>that</td>
<td>0.885 - 1.026 sec</td>
<td>
<audio title="that.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/that.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>curiosity</td>
<td>1.086 - 1.790 sec</td>
<td>
<audio title="curiosity.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/curiosity.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>beside</td>
<td>1.871 - 2.314 sec</td>
<td>
<audio title="beside.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/beside.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>me</td>
<td>2.334 - 2.414 sec</td>
<td>
<audio title="me.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/me.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>at</td>
<td>2.495 - 2.575 sec</td>
<td>
<audio title="at.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/at.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>this</td>
<td>2.595 - 2.756 sec</td>
<td>
<audio title="this.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/this.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
<tr>
<td>moment</td>
<td>2.837 - 3.138 sec</td>
<td>
<audio title="moment.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/moment.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
</tr>
</table><p>We repost the whole wave below for ease of reference:</p>
<table>
<tr>
<th>Wave filename</th>
<th>Content</th>
<th>Text</th>
</tr>
<tr>
<td>Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav</td>
<td>
<audio title="Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" controls="controls">
<source src="/icefall/_static/kaldi-align/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
</td>
<td>
i had that curiosity beside me at this moment
</td>
</tr>
</table></section>
<section id="summary">
<h2>Summary<a class="headerlink" href="#summary" title="Permalink to this heading"></a></h2>
<p>Congratulations! You have succeeded in using the FST-based approach to
compute alignment of a test wave.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="diff.html" class="btn btn-neutral float-left" title="Two approaches" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="k2-based.html" class="btn btn-neutral float-right" title="k2-based forced alignment" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2021, icefall development team.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -48,6 +48,7 @@
<li class="toctree-l1"><a class="reference internal" href="docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -50,6 +50,7 @@
<li class="toctree-l1"><a class="reference internal" href="docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li>
@ -137,6 +138,12 @@ speech recognition recipes using <a class="reference external" href="https://git
<li class="toctree-l2"><a class="reference internal" href="model-export/export-ncnn.html">Export to ncnn</a></li> <li class="toctree-l2"><a class="reference internal" href="model-export/export-ncnn.html">Export to ncnn</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="fst-based-forced-alignment/index.html">FST-based forced alignment</a><ul>
<li class="toctree-l2"><a class="reference internal" href="fst-based-forced-alignment/diff.html">Two approaches</a></li>
<li class="toctree-l2"><a class="reference internal" href="fst-based-forced-alignment/kaldi-based.html">Kaldi-based forced alignment</a></li>
<li class="toctree-l2"><a class="reference internal" href="fst-based-forced-alignment/k2-based.html">k2-based forced alignment</a></li>
</ul>
</li>
</ul> </ul>
</div> </div>
<div class="toctree-wrapper compound"> <div class="toctree-wrapper compound">

View File

@ -74,6 +74,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -64,6 +64,7 @@
<li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li> <li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -72,6 +72,7 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
@ -125,8 +126,8 @@
</div> </div>
<div class="admonition caution"> <div class="admonition caution">
<p class="admonition-title">Caution</p> <p class="admonition-title">Caution</p>
<p>Please use a more recent version of PyTorch. For instance, <code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">1.8</span></code> <p><code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">&gt;</span> <span class="pre">2.0</span></code> may not work. If you get errors while building pnnx, please switch
may <code class="docutils literal notranslate"><span class="pre">not</span></code> work.</p> to <code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">&lt;</span> <span class="pre">2.0</span></code>.</p>
</div> </div>
<section id="download-the-pre-trained-model"> <section id="download-the-pre-trained-model">
<h2>1. Download the pre-trained model<a class="headerlink" href="#download-the-pre-trained-model" title="Permalink to this heading"></a></h2> <h2>1. Download the pre-trained model<a class="headerlink" href="#download-the-pre-trained-model" title="Permalink to this heading"></a></h2>

View File

@ -21,7 +21,7 @@
<script src="../_static/js/theme.js"></script> <script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" /> <link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" /> <link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Recipes" href="../recipes/index.html" /> <link rel="next" title="FST-based forced alignment" href="../fst-based-forced-alignment/index.html" />
<link rel="prev" title="Export ConvEmformer transducer models to ncnn" href="export-ncnn-conv-emformer.html" /> <link rel="prev" title="Export ConvEmformer transducer models to ncnn" href="export-ncnn-conv-emformer.html" />
</head> </head>
@ -72,6 +72,7 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
@ -121,8 +122,8 @@
</div> </div>
<div class="admonition caution"> <div class="admonition caution">
<p class="admonition-title">Caution</p> <p class="admonition-title">Caution</p>
<p>Please use a more recent version of PyTorch. For instance, <code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">1.8</span></code> <p><code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">&gt;</span> <span class="pre">2.0</span></code> may not work. If you get errors while building pnnx, please switch
may <code class="docutils literal notranslate"><span class="pre">not</span></code> work.</p> to <code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">&lt;</span> <span class="pre">2.0</span></code>.</p>
</div> </div>
<section id="download-the-pre-trained-model"> <section id="download-the-pre-trained-model">
<h2>1. Download the pre-trained model<a class="headerlink" href="#download-the-pre-trained-model" title="Permalink to this heading"></a></h2> <h2>1. Download the pre-trained model<a class="headerlink" href="#download-the-pre-trained-model" title="Permalink to this heading"></a></h2>
@ -806,7 +807,7 @@ with <code class="docutils literal notranslate"><span class="pre">int8</span></c
</div> </div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="export-ncnn-conv-emformer.html" class="btn btn-neutral float-left" title="Export ConvEmformer transducer models to ncnn" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="export-ncnn-conv-emformer.html" class="btn btn-neutral float-left" title="Export ConvEmformer transducer models to ncnn" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../recipes/index.html" class="btn btn-neutral float-right" title="Recipes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> <a href="../fst-based-forced-alignment/index.html" class="btn btn-neutral float-right" title="FST-based forced alignment" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div> </div>
<hr/> <hr/>

View File

@ -71,6 +71,7 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>
@ -120,8 +121,8 @@
</div> </div>
<div class="admonition caution"> <div class="admonition caution">
<p class="admonition-title">Caution</p> <p class="admonition-title">Caution</p>
<p>Please use a more recent version of PyTorch. For instance, <code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">1.8</span></code> <p><code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">&gt;</span> <span class="pre">2.0</span></code> may not work. If you get errors while building pnnx, please switch
may <code class="docutils literal notranslate"><span class="pre">not</span></code> work.</p> to <code class="docutils literal notranslate"><span class="pre">torch</span> <span class="pre">&lt;</span> <span class="pre">2.0</span></code>.</p>
</div> </div>
<section id="download-the-pre-trained-model"> <section id="download-the-pre-trained-model">
<h2>1. Download the pre-trained model<a class="headerlink" href="#download-the-pre-trained-model" title="Permalink to this heading"></a></h2> <h2>1. Download the pre-trained model<a class="headerlink" href="#download-the-pre-trained-model" title="Permalink to this heading"></a></h2>

View File

@ -63,6 +63,7 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -65,6 +65,7 @@
<li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li> <li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -63,6 +63,7 @@
<li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li> <li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -63,6 +63,7 @@
<li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li> <li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

View File

@ -58,6 +58,7 @@
<li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li> <li class="toctree-l2"><a class="reference internal" href="export-ncnn.html">Export to ncnn</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="../recipes/index.html">Recipes</a></li>

Binary file not shown.

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Recipes</a><ul class="current">

View File

@ -22,7 +22,7 @@
<link rel="index" title="Index" href="../genindex.html" /> <link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" /> <link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Non Streaming ASR" href="Non-streaming-ASR/index.html" /> <link rel="next" title="Non Streaming ASR" href="Non-streaming-ASR/index.html" />
<link rel="prev" title="Export LSTM transducer models to ncnn" href="../model-export/export-ncnn-lstm.html" /> <link rel="prev" title="k2-based forced alignment" href="../fst-based-forced-alignment/k2-based.html" />
</head> </head>
<body class="wy-body-for-nav"> <body class="wy-body-for-nav">
@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="../docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="../faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="../model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Recipes</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">Recipes</a><ul>
@ -136,7 +137,7 @@ Currently, we provide recipes for speech recognition, language model, and speech
</div> </div>
</div> </div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../model-export/export-ncnn-lstm.html" class="btn btn-neutral float-left" title="Export LSTM transducer models to ncnn" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="../fst-based-forced-alignment/k2-based.html" class="btn btn-neutral float-left" title="k2-based forced alignment" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Non-streaming-ASR/index.html" class="btn btn-neutral float-right" title="Non Streaming ASR" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> <a href="Non-streaming-ASR/index.html" class="btn btn-neutral float-right" title="Non Streaming ASR" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div> </div>

View File

@ -51,6 +51,7 @@
<li class="toctree-l1"><a class="reference internal" href="docker/index.html">Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="docker/index.html">Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="faqs.html">Frequently Asked Questions (FAQs)</a></li> <li class="toctree-l1"><a class="reference internal" href="faqs.html">Frequently Asked Questions (FAQs)</a></li>
<li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li> <li class="toctree-l1"><a class="reference internal" href="model-export/index.html">Model export</a></li>
<li class="toctree-l1"><a class="reference internal" href="fst-based-forced-alignment/index.html">FST-based forced alignment</a></li>
</ul> </ul>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li> <li class="toctree-l1"><a class="reference internal" href="recipes/index.html">Recipes</a></li>

File diff suppressed because one or more lines are too long