No project description provided
Project description
Introduction
Python wrapper for Kaldi's native I/O. The internal implementation uses C++ code from Kaldi. A Python wrapper with pybind11 is provided to read ark/scp files from Kaldi in Python.
Note: This project is self-contained and does not depend on Kaldi
.
Installation
pip install --verbose kaldi_native_io
or
git clone https://github.com/csukuangfj/kaldi_native_io
cd kaldi_native_io
python3 setup.py install
or
conda install -c kaldi_native_io kaldi_native_io
Features
-
Native support for ALL types of
rspecifier
andwspecifier
since the C++ code is borrowed from Kaldi. -
Support the following data types (More will be added later on request.)
- Note: We also support Python
bytes
class
- Note: We also support Python
C++ Data Type | Writer | Sequential Reader | Random Access Reader |
---|---|---|---|
Python's bytes |
BlobWriter |
SequentialBlobReader |
RandomAccessBlobReader |
int32 |
Int32Writer |
SequentialInt32Reader |
RandomAccessInt32Reader |
std::vector<int32> |
Int32VectorWriter |
SequentialInt32VectorReader |
RandomAccessInt32VectorReader |
std::vector<int8> |
Int8VectorWriter |
SequentialInt8VectorReader |
RandomAccessInt8VectorReader |
std::vector<std::vector<int32>> |
Int32VectorVectorWriter |
SequentialInt32VectorVectorReader |
RandomAccessInt32VectorVectorReader |
std::vector<std::pair<int32, int32>> |
Int32PairVectorWriter |
SequentialInt32PairVectorReader |
RandomAccessInt32PairVectorReader |
float |
FloatWriter |
SequentialFloatReader |
RandomAccessFloatReader |
std::vector<std::pair<float, float>> |
FloatPairVectorWriter |
SequentialFloatPairVectorReader |
RandomAccessFloatPairVectorReader |
double |
DoubleWriter |
SequentialDoubleReader |
RandomAccessDoubleReader |
bool |
BoolWriter |
SequentialBoolReader |
RandomAccessBoolReader |
std::string |
TokenWriter |
SequentialTokenReader |
RandomAccessTokenReader |
std::vector<std::string> |
TokenVectorWriter |
SequentialTokenVectorReader |
RandomAccessTokenVectorReader |
kaldi::Vector<float> |
FloatVectorWriter |
SequentialFloatVectorReader |
RandomAccessFloatVectorReader |
kaldi::Vector<double> |
DoubleVectorWriter |
SequentialDoubleVectorReader |
RandomAccessDoubleVectorReader |
kaldi::Matrix<float> |
FloatMatrixWriter |
SequentialFloatMatrixReader |
RandomAccessFloatMatrixReader |
kaldi::Matrix<double> |
DoubleMatrixWriter |
SequentialDoubleMatrixReader |
RandomAccessDoubleMatrixReader |
std::pair<kaldi::Matrix<float>, HtkHeader> |
HtkMatrixWriter |
SequentialHtkMatrixReader |
RandomAccessHtkMatrixReader |
kaldi::CompressedMatrix |
CompressedMatrixWriter |
SequentialCompressedMatrixReader |
RandomAccessCompressedMatrixReader |
kaldi::Posterior |
PosteriorWriter |
SequentialPosteriorReader |
RandomAccessPosteriorReader |
kaldi::GausPost |
GaussPostWriter |
SequentialGaussPostReader |
RandomAccessGaussPostReader |
kaldi::WaveInfo |
- | SequentialWaveInfoReader |
RandomAccessWaveInfoReader |
kaldi::WaveData |
- | SequentialWaveReader |
RandomAccessWaveReader |
MatrixShape |
- | SequentialMatrixShapeReader |
RandomAccessMatrixShapeReader |
Note:
MatrixShape
does not exist in Kaldi. Its purpose is to get the shape information of a matrix without reading all the data.
Usage
Table readers and writers
Write
Create a writer
instance with a wspecifier
and use writer[key] = value
.
For instance, the following code uses kaldi_native_io.FloatMatrixWriter
to
write kaldi::Matrix<float>
to a wspecifier
.
import numpy as np
import kaldi_native_io
base = "float_matrix"
wspecifier = f"ark,scp,t:{base}.ark,{base}.scp"
def test_float_matrix_writer():
with kaldi_native_io.FloatMatrixWriter(wspecifier) as ko:
ko.write("a", np.array([[1, 2], [3, 4]], dtype=np.float32))
ko["b"] = np.array([[10, 20, 30], [40, 50, 60]], dtype=np.float32)
Read
Sequential Read
Create a sequential reader instance with an rspecifier
and use for key, value in reader
to read the file.
For instance, the following code uses kaldi_native_io.SequentialFloatMatrixReader
to
read kaldi::Matrix<float>
from an rspecifier
.
import numpy as np
import kaldi_native_io
base = "float_matrix"
rspecifier = f"scp:{base}.scp"
def test_sequential_float_matrix_reader():
with kaldi_native_io.SequentialFloatMatrixReader(rspecifier) as ki:
for key, value in ki:
if key == "a":
assert np.array_equal(
value, np.array([[1, 2], [3, 4]], dtype=np.float32)
)
elif key == "b":
assert np.array_equal(
value,
np.array([[10, 20, 30], [40, 50, 60]], dtype=np.float32),
)
else:
raise ValueError(f"Unknown key {key} with value {value}")
Random Access Read
Create a random access reader instance with an rspecifier
and use reader[key]
to read the file.
For instance, the following code uses kaldi_native_io.RandomAccessFloatMatrixReader
to
read kaldi::Matrix<float>
from an rspecifier
.
import numpy as np
import kaldi_native_io
base = "float_matrix"
rspecifier = f"scp:{base}.scp"
def test_random_access_float_matrix_reader():
with kaldi_native_io.RandomAccessFloatMatrixReader(rspecifier) as ki:
assert "b" in ki
assert "a" in ki
assert np.array_equal(
ki["a"], np.array([[1, 2], [3, 4]], dtype=np.float32)
)
assert np.array_equal(
ki["b"], np.array([[10, 20, 30], [40, 50, 60]], dtype=np.float32)
)
There are unit tests for all supported types. Please visit https://github.com/csukuangfj/kaldi_native_io/tree/master/kaldi_native_io/python/tests for more examples.
Read and write a single matrix
See
- https://github.com/csukuangfj/kaldi_native_io/blob/master/kaldi_native_io/python/tests/test_float_matrix_writer_reader.py
- https://github.com/csukuangfj/kaldi_native_io/blob/master/kaldi_native_io/python/tests/test_double_matrix_writer_reader.py
def test_read_write_single_mat():
arr = np.array(
[
[0, 1, 2, 22, 33],
[3, 4, 5, -1, -3],
[6, 7, 8, -9, 0],
[9, 10, 11, 5, 100],
],
dtype=np.float32,
)
mat = kaldi_native_io.FloatMatrix(arr)
mat.write(wxfilename="binary.ark", binary=True)
mat.write(wxfilename="matrix.txt", binary=False)
m1 = kaldi_native_io.FloatMatrix.read("binary.ark")
m2 = kaldi_native_io.FloatMatrix.read("matrix.txt")
assert np.array_equal(mat, m1)
assert np.array_equal(mat, m2)
# read range
# Note: the upper bound is inclusive!
m3 = kaldi_native_io.FloatMatrix.read("binary.ark[0:1]") # row 0 and row 1
assert np.array_equal(mat.numpy()[0:2], m3.numpy())
m4 = kaldi_native_io.FloatMatrix.read(
"matrix.txt[:,3:4]"
) # column 3 and column 4
assert np.array_equal(mat.numpy()[:, 3:5], m4.numpy())
os.remove("binary.ark")
os.remove("matrix.txt")
a = np.array([[1, 2], [3, 4]], dtype=np.float32)
b = np.array([[10, 20, 30], [40, 50, 60]], dtype=np.float32)
with kaldi_native_io.FloatMatrixWriter("ark,scp:m.ark,m.scp") as ko:
ko.write("a", a)
ko["b"] = b
"""
m.scp contains:
a m.ark:2
b m.ark:35
"""
m5 = kaldi_native_io.FloatMatrix.read("m.ark:2")
assert np.array_equal(m5.numpy(), a)
m6 = kaldi_native_io.FloatMatrix.read("m.ark:35")
assert np.array_equal(m6.numpy(), b)
os.remove("m.scp")
os.remove("m.ark")
Read and write a single vector
See
- https://github.com/csukuangfj/kaldi_native_io/blob/master/kaldi_native_io/python/tests/test_float_vector_writer_reader.py
- https://github.com/csukuangfj/kaldi_native_io/blob/master/kaldi_native_io/python/tests/test_double_vector_writer_reader.py
def test_read_write_single_vector():
a = np.array([1, 2], dtype=np.float32)
v = kaldi_native_io.FloatVector(a)
v.write(wxfilename="binary.ark", binary=True)
b = kaldi_native_io.FloatVector.read("binary.ark")
assert np.array_equal(a, b.numpy())
a = np.array([1, 2], dtype=np.float32)
b = np.array([10.5], dtype=np.float32)
with kaldi_native_io.FloatVectorWriter("ark,scp:v.ark,v.scp") as ko:
ko.write("a", a)
ko["b"] = b
"""
v.scp contains:
a v.ark:2
b v.ark:22
"""
va = kaldi_native_io.FloatVector.read("v.ark:2")
assert np.array_equal(va.numpy(), a)
vb = kaldi_native_io.FloatVector.read("v.ark:22")
assert np.array_equal(vb.numpy(), b)
os.remove("v.scp")
os.remove("v.ark")
def test_read_write_single_vector():
a = np.array([1, 2], dtype=np.float64)
v = kaldi_native_io.DoubleVector(a)
v.write(wxfilename="binary.ark", binary=True)
b = kaldi_native_io.DoubleVector.read("binary.ark")
assert np.array_equal(a, b.numpy())
os.remove("binary.ark")
a = np.array([1, 2], dtype=np.float64)
b = np.array([10.5], dtype=np.float64)
with kaldi_native_io.DoubleVectorWriter("ark,scp:v.ark,v.scp") as ko:
ko.write("a", a)
ko["b"] = b
"""
v.scp contains:
a v.ark:2
b v.ark:30
"""
va = kaldi_native_io.DoubleVector.read("v.ark:2")
assert np.array_equal(va.numpy(), a)
vb = kaldi_native_io.DoubleVector.read("v.ark:30")
assert np.array_equal(vb.numpy(), b)
os.remove("v.scp")
os.remove("v.ark")
Read a single int32 vector
def test_read_single_item():
a = [10, 20]
b = [100, 200, 300]
# You can also generate a text format by adding ",t" if you like
# with kaldi_native_io.Int32VectorWriter("ark,scp,t:v.ark,v.scp") as ko:
with kaldi_native_io.Int32VectorWriter("ark,scp:v.ark,v.scp") as ko:
ko.write("a", a)
ko["b"] = b
"""
v.scp contains:
a v.ark:2
b v.ark:21
"""
va = kaldi_native_io.read_int32_vector("v.ark:2")
assert va == a
vb = kaldi_native_io.read_int32_vector("v.ark:21")
assert va == b
Read/Write Waves
See
- https://github.com/csukuangfj/kaldi_native_io/blob/master/kaldi_native_io/python/tests/test_wave_reader.py
- https://github.com/csukuangfj/kaldi_native_io/blob/master/kaldi_native_io/python/tests/test_wave_data.py
def test_wave_writer():
file1 = "/ceph-fj/fangjun/open-source-2/kaldi_native_io/build/BAC009S0002W0123.wav"
if not Path(file1).is_file():
return
file2 = "/ceph-fj/fangjun/open-source-2/kaldi_native_io/build/BAC009S0002W0124.wav"
if not Path(file2).is_file():
return
print("-----test_wave_writer------")
file2 = f"cat {file2} |"
wave1 = kaldi_native_io.read_wave(file1)
wave2 = kaldi_native_io.read_wave(file2)
wspecifier = "ark,scp:wave.ark,wave.scp"
with kaldi_native_io.WaveWriter(wspecifier) as ko:
ko.write("a", wave1)
ko["b"] = wave2
"""
wave.scp has the following content:
a wave.ark:2
b wave.ark:123728
"""
wave3 = kaldi_native_io.read_wave("wave.ark:2")
wave4 = kaldi_native_io.read_wave("wave.ark:123728")
assert wave1.sample_freq == wave3.sample_freq
assert wave2.sample_freq == wave4.sample_freq
assert np.array_equal(wave1.data.numpy(), wave3.data.numpy())
assert np.array_equal(wave2.data.numpy(), wave4.data.numpy())
Read/Write Python's bytes
See
base = "blob"
wspecifier = f"ark,scp:{base}.ark,{base}.scp"
rspecifier = f"scp:{base}.scp"
def test_blob_writer():
with kaldi_native_io.BlobWriter(wspecifier) as ko:
ko.write("a", bytes([0x30, 0x31]))
ko["b"] = b"1234"
def test_sequential_blob_reader():
with kaldi_native_io.SequentialBlobReader(rspecifier) as ki:
for key, value in ki:
if key == "a":
assert value == bytes([0x30, 0x31])
elif key == "b":
assert value == b"1234"
else:
raise ValueError(f"Unknown key {key} with value {value}")
def test_read_single_item():
a = bytes([10, 20])
b = b"1234"
with kaldi_native_io.BlobWriter("ark,scp:b.ark,b.scp") as ko:
ko.write("a", a)
ko["b"] = b
"""
b.scp contains:
a b.ark:2
b b.ark:20
"""
va = kaldi_native_io.read_blob("b.ark:2")
assert va == a, (va, a)
vb = kaldi_native_io.read_blob("b.ark:20")
assert vb == b, (vb, b)
# test range read
# [start:end], both ends are inclusive
# Must satisfy 0 <= start <= end < length of the data
# start 0, end 2
vc = kaldi_native_io.read_blob("b.ark:20[0:2]")
assert vc == b"123", (vc, b"123")
# start 1, end 2
vd = kaldi_native_io.read_blob("b.ark:20[1:2]")
assert vd == b"23", (vd, b"23")
# start 2, end 2
ve = kaldi_native_io.read_blob("b.ark:20[2:2]")
assert ve == b"3", (ve, b"3")
# start 2, end -1
# -1 means the end of the data
vf = kaldi_native_io.read_blob("b.ark:20[2:-1]")
assert vf == b"34", (vf, b"34")
# [:] means all the data
vg = kaldi_native_io.read_blob("b.ark:20[:]")
assert vg == b"1234", (vg, b"1234")
os.remove("b.scp")
os.remove("b.ark")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for kaldi_native_io-1.22.1-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2f278448de0bde68ad85af0324aa3215ec1cafd0063a6ed076c9171b5028eed |
|
MD5 | ba49b314dd269c58f976838c34f44133 |
|
BLAKE2b-256 | ddcc35556f549eca059299d895e011a25275dee4a627bf338a62ae592948e6bc |
Hashes for kaldi_native_io-1.22.1-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32a6097063982e157ac3abe3cd9fc8d58f298b26a2349db259b33e43b82a465c |
|
MD5 | 3f46104721a0938eacdb6ae07f0f2390 |
|
BLAKE2b-256 | 1956eb58a1b54364ec9c221311a3a65367752af94276efed524a7f5f8a3dcccf |
Hashes for kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0953a28bb9cbfe084a7616b06d87f4ff8c4fe222939e08039e8cc77312c36c6 |
|
MD5 | 9bdf27194ab9f9b9ff6bef7c710c3758 |
|
BLAKE2b-256 | 865a9f4dfc1db8c2c68949be10c894f4461919f06762d7f51345d1192ef12de6 |
Hashes for kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab143a6ff34b2f3b0df5f98719c552b995695e71077393ccfee34b534eef3cda |
|
MD5 | 4e0cbedac9a5ee6cb3b6053b88a5dcf1 |
|
BLAKE2b-256 | d16bb0aa0f0ceb72ae89433158786d6b462e21dbc3c5d2a324047613c8bf451e |
Hashes for kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b4d1f60bf3e737b394f2ed759c8353e864120c10a9181f19906a2382844c54d |
|
MD5 | 8d4e7c286af048bf4312d98b673fbd34 |
|
BLAKE2b-256 | 9dcd9b79f835a18becb493bb89a213fb2cf7941e2bbeca2aa6043e0902d04ece |
Hashes for kaldi_native_io-1.22.1-cp312-cp312-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5af8aec63d554dbca7d7c9ccedb1712497557b578cbfde090d2fed2c7e3cd4ab |
|
MD5 | bb35b0791c6de9656ea4927373e64047 |
|
BLAKE2b-256 | c0daf85a5dbd9517e1eccc1b5854f9b6d1053621c9ebf581faea1e973946b4a6 |
Hashes for kaldi_native_io-1.22.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d5010e1553836ea020e8638476cc81ffd27536caf4bfae7b5b0e785180ff2ab |
|
MD5 | 649875cd8e4cbc33fd178a576058cc4a |
|
BLAKE2b-256 | 3851f41e30b628ea933d396417f57186e31ed5d5c78cb5f72f342418f2aad737 |
Hashes for kaldi_native_io-1.22.1-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1da2c31174406a213b45b9b6d3ca5a43d96d05727b2f56fd4ecdbe2f35c8caea |
|
MD5 | 5e6a5360a5c5b356651e255685784707 |
|
BLAKE2b-256 | 7c34739042deec44f16f5d876e2e4052833193949d5d7ed73cbc4f18021e4384 |
Hashes for kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b21218352bb759eca08776a18295f58c6cc6d6647aeb0ab91ee2b9918299895 |
|
MD5 | 04b83da9bdbdbfb7a2849727a702b403 |
|
BLAKE2b-256 | 5d4be84544745104add08dfd39749c97f0150c6fbbd47e07ad3186a2a9d96aac |
Hashes for kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1363457e9cc1d253640e385768c6462fcdfefc9cc0426cc9fd8dcab1867165d |
|
MD5 | 0ce90f5a566ab4dd52257235c3d8f385 |
|
BLAKE2b-256 | 8d87ffe167081349adc294d763929dc0a57d0d4d37a145906456c092cab8e4a5 |
Hashes for kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42a632371a4e35be04353b03b1ca02be2febbeaa712effa9f716512cbe85b0f7 |
|
MD5 | 96fa2dfd78570e7190b059158c132546 |
|
BLAKE2b-256 | 743ccea211e147ccc1f364f045708abaca9827d8f3e7b570b5a9369b40bb521f |
Hashes for kaldi_native_io-1.22.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dfb62584e3bb9c97d6bfdbd5d3bb5bc30bae1b5c5d2e3a4ebc2c28d9ed72958 |
|
MD5 | 550bf4b8ea7926ebaf2a67303ec516db |
|
BLAKE2b-256 | 3800f3f0fb9e8c8a023e04f502bacbb8f76eec5ad4ef20b4d001b409cf2726af |
Hashes for kaldi_native_io-1.22.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7145484b4d2c301dbd16b0c542f5ffc32333f1603a00cab3027374934386d536 |
|
MD5 | 264794ed9ad8b1f63130cb713c315646 |
|
BLAKE2b-256 | 47f52c34190be6b393616d5ffca9ae6a5f283ac696621c72e4d446679720d039 |
Hashes for kaldi_native_io-1.22.1-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eacd4e5b69fdfdb157b8884572c9f51feab31b578428336445c5c247ede3d2c8 |
|
MD5 | 7a4367c2fa419b57b16d460fc2b44b74 |
|
BLAKE2b-256 | 252bfb2f160fe1cf0e9eb8430a75facd9eff63f4ecf6cdf11055686b0994a838 |
Hashes for kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2bb3aa50a3aa8a054972906ed9d1613d2b83905d1b8da725d4b6924dddfc175 |
|
MD5 | 9a33f44a82b009c11007d5eb43d410e2 |
|
BLAKE2b-256 | 0820764c5232fc822dede2505194b7a53c1f08199397c264c28c5f70899c4a14 |
Hashes for kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aaa94ccc1b621a1603f8105ba96b5f18a5bc162a6bc95159abe655adc23378e2 |
|
MD5 | 64455fb4903f9d468570fd3d281c057f |
|
BLAKE2b-256 | 143607e0478a21482d45d3853635c6f44e1c05471048eb08199241fc6b8ede45 |
Hashes for kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bedae8aacc794cd6a9e9edee285c2966c656879497328b539df71c34573d47f |
|
MD5 | 5a120287d7277226d7cae1a5fbf8acba |
|
BLAKE2b-256 | e368019660269b71f148bbabb95974872c17bf3873f5537b9abb6a2da4caa695 |
Hashes for kaldi_native_io-1.22.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 165a606568814439cb8ad53b44c1a002edc8704076674de87b090ff7c1697468 |
|
MD5 | 495c9dc58a3d71177f7d66e948588043 |
|
BLAKE2b-256 | 214ae1436d781a9a2d7f6cdffae6f35122b67584b0309b311befdb539edbbf6d |
Hashes for kaldi_native_io-1.22.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82107bdf51dcdfd1012bc2d7167b12da6374bc5149fcf8356d0797fa5db4a31c |
|
MD5 | 6174e3111ce307d1b87bee27f66ae0fc |
|
BLAKE2b-256 | f75f48b58a920f95355b84f6f4fd771e6d5a45562ead5bb228eb779b34687335 |
Hashes for kaldi_native_io-1.22.1-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 347cdba971b485b1a076ab9d9052093b9403db3f628c821848cf1926c83c09a6 |
|
MD5 | d675df39362691f2b365e64fb072276f |
|
BLAKE2b-256 | ecd3923b2d4267fa3a72c378a678feff419edff3903360dab5a7b4f071cb8a69 |
Hashes for kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dcf72125c7612bab277d645bb3a7b55767decd298c556b1c36502b28b7defc3 |
|
MD5 | 4387034eb1054a8ead01fbd023bc9e71 |
|
BLAKE2b-256 | 7f8279561bc4fb466916313833ac2647d35ae11c5241f0e02b67c5c702852acd |
Hashes for kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51e2a5f3652b9d7f06d2626209e679d78350805e2ff014d4cf8f42f2d15f2bc3 |
|
MD5 | 42bf393a4ef125d3b6701de5acb37876 |
|
BLAKE2b-256 | 3231c7c1fb63de58e36bc187a5840476ffb6d25a1f5871ac480dde39dd0548ce |
Hashes for kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0eb275d86cf5e57c35e78a15dc67843c527d523a6d4de355f1a429aeb54df625 |
|
MD5 | 04118a67ecad3db1d352d5af6d274e53 |
|
BLAKE2b-256 | 139d138d62cdd82057f75b599145929a69ac831b8dd202ea461a739a96b97d81 |
Hashes for kaldi_native_io-1.22.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 014085a7df03a2871cd594a67e24cc3687d0a9f23666da158a1ce2c3d6131e03 |
|
MD5 | f6d1765e365a5b0b64cfbb8f48c24a44 |
|
BLAKE2b-256 | 5d9c1600d85a662d554ccd10f951dbd52b343d05d39f7a6fafffd86b52fccc23 |
Hashes for kaldi_native_io-1.22.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fafacb39fc5f9c6bd9bfac5b8d3e969075af8ce972bfb0a522f87fb4ec264b29 |
|
MD5 | fc9d0220ce0e2f8d5479a223a0cca55e |
|
BLAKE2b-256 | 598d6431442041aaeb96a52c8c80b662bf249e3b1158b8f5c7e9ea0f407cfac3 |
Hashes for kaldi_native_io-1.22.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b1c841220a04917cbefd41092b3fb2c050764b14dd3e4f69c185c259bafcc41 |
|
MD5 | 19df807fc3ecd627faf10cccf459a2c3 |
|
BLAKE2b-256 | 47d6601e96b9f1ab313e062f2084ff063f648cede12df0db82d57f9382cf9430 |
Hashes for kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51e3b3d32ab3cc4038014468a76cd2fec532b4b3521f4daaa00101fe271dc05f |
|
MD5 | 2c5b4033d35d31c848c68b7832d4c352 |
|
BLAKE2b-256 | b7018211cce6bb949b76d3f8a2526559b6e9cdc3c9aadf66540ebcdfe981118c |
Hashes for kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2286a36d8fa96e6f79c18fc23f3e1ac7280cfb011f53d5a1d87fc624371039d3 |
|
MD5 | 23102b3a4593503ab9de13f8b677e88f |
|
BLAKE2b-256 | cf63614773176b97d9fc76200f36d7d8776022ba6148419033c359edf9502fe5 |
Hashes for kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f29db52fff28ccdafa7448d39314081729d52b075e1d29ef6b51ec9fdcd0b04d |
|
MD5 | f9f921867b5b36caabe85ae2daa9db0d |
|
BLAKE2b-256 | 7d68e130d88dd4d5a5b5a2aed9edaf745343cbbdf012bc2766f00aea956c22e3 |
Hashes for kaldi_native_io-1.22.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e64392d9349b1dccec3ee4d485edaec51c17bbdddb56f48928aa75c9603c6ee |
|
MD5 | 945934f87e9df6cd24559b0ae53d8828 |
|
BLAKE2b-256 | 9f16bca7ee097f55be16bf5bbfeaebe3b5bf2c2d54327c056f46abb8a83e179b |
Hashes for kaldi_native_io-1.22.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4febf9f7f4d68fec847d6c001b9a29ee9d4285bb0b220b0059ec720d69ed015 |
|
MD5 | e1fb71739688685ef6be3f6cc08dd098 |
|
BLAKE2b-256 | d45736b8a6eb58b020bea53d4075db981209c0d90d349d5f0373c3427195d8fd |
Hashes for kaldi_native_io-1.22.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 246631310bb1b7aa22726f4638576c7e543e293bd991435332e7034c59becc4c |
|
MD5 | c1e56a9671ea2de60a3649a2a3ca89f5 |
|
BLAKE2b-256 | 4cbdfc578456c186debcdf471f979257b6bd22ac301ec7a3f8e9732ec6ee96ad |
Hashes for kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4941a7666a68744d4ba6b96f870c61fc8690c3d8decbf110384bb9676441ca98 |
|
MD5 | c19433a6c902fad9f6cb3f92da18eb50 |
|
BLAKE2b-256 | 7ec3cbb91cb975d2ae88589540d436a144db88f74d1c4c6a31a0ab0107175c32 |
Hashes for kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94b1d5073f5394103f9c794d55deff08ed8db26bcc25b159b754bc2f867c444e |
|
MD5 | 563daa144a6134abcd4acb97ed2d62e4 |
|
BLAKE2b-256 | 1086c5eafb1653822765f971d20c9b56d0ce4de9643929207a8298faa19ec352 |
Hashes for kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf92f8de74d30027a8d9c44bc66bf645c9ba734dc358722738e600f450447717 |
|
MD5 | 907043176fdbfac7228f27344095d65f |
|
BLAKE2b-256 | da3ef4bcded2a2a053ff15cb0e44df6ae7d235893031b7b99ae766b2e0ad438d |
Hashes for kaldi_native_io-1.22.1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad52e851d4bfe5eb7b77e58e1b7df82b5fe237051fcff9840cf5a345d08d22c0 |
|
MD5 | d5e6a50eb892b9ce8ae45121f56ac7e4 |
|
BLAKE2b-256 | 8de8ddecccc1cad261352690747a59d3a6571b228eee0aaccfd16ad66a8a0180 |
Hashes for kaldi_native_io-1.22.1-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ef2904e6a12de30870a4aabc9073ee71f05f6211c22c6d39d5529e56288c707 |
|
MD5 | 4dd7348c86668d4888eb48677236481b |
|
BLAKE2b-256 | efe7a54429fe312263f384a2f8ee91e7a0969c0def6881f4672d7d99cdd24001 |
Hashes for kaldi_native_io-1.22.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5699c3bb438aaa890b730bc7b1d66297cf8e1132bba675b60197c0a26e9b1913 |
|
MD5 | aefbbf41368bbee3e3c82faa000e7c2d |
|
BLAKE2b-256 | df0ecaaf6f50619e0282dcc537de1f9306fbf30a2091ca6018930ace0d30fb85 |
Hashes for kaldi_native_io-1.22.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f0d5a50f9aa414955f116c12a15c9e6c49eb5d4c1fb6dc0e785382838b81c5a |
|
MD5 | 9e2f4f780a8b14758e662d0024d86783 |
|
BLAKE2b-256 | 0dde4307700c23064cbec9fcc71bb85540d45f0111b187e4515365b089037438 |