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)
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 Distributions
Built Distributions
Hashes for kaldi_native_io-1.19-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4581ec7f10b457afcc07ead971f440c6aebaaf8a94cfb316ac8daa3b01ee987 |
|
MD5 | fd0b47aee3b70c99476018fe98d475fe |
|
BLAKE2b-256 | df605d5a6c2c246869fdbfd7092ee653edbef2cf54e7bfb7717efdeba3bcb6ad |
Hashes for kaldi_native_io-1.19-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5bff9275858c08845dd52ff808e9b7ccad0d14f48e7bdf54f332d7ccb4ce00d |
|
MD5 | 5daa3dc5afcc7f9c98c52d915386aa48 |
|
BLAKE2b-256 | 637c710e97e529fcdf321707b94be7d85b45c1665c29b66dc841a992f7b3bee9 |
Hashes for kaldi_native_io-1.19-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48e0642174525ade4eeb80dbc89fb503754f50fc911612c37f8e502cc484c871 |
|
MD5 | 1b0c1549ca84ec9ff8bd78ea0cca4b88 |
|
BLAKE2b-256 | 754a5c9b451a981652fe39bc5a15fab4ac89dbaf10064c4c9441a25c5d035b42 |
Hashes for kaldi_native_io-1.19-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e92ae7ac2f7ba23ef724625462dfbc93920172b205b006bc6416dd51b3f6316b |
|
MD5 | 8d81d63237b76ff9bdb5a38872b4a1a3 |
|
BLAKE2b-256 | e9d70bb55502e5c6330b1c2c0df03dcc3ed5912be401343ed1d7033cec5f044c |
Hashes for kaldi_native_io-1.19-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 877215eb098bfe60beb2096f8296febad76ceea53bb3a20a920b34dc03c6ac1d |
|
MD5 | c5cdc2440f03b63e40196b73956a8b83 |
|
BLAKE2b-256 | 0718ae8e4ecd41be321bf930dd0a4cc3510d15a36f349faa7f0b479d9c5d1575 |
Hashes for kaldi_native_io-1.19-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70105c5d5a5989d279c9ac8db4e75ae622522319665d743cac3661e0fae77ffc |
|
MD5 | 6a8f68c53685f69d7513d7de463eadf7 |
|
BLAKE2b-256 | 332e55fc16254e9cc02e7654f236abcc50cb934db33f4083411e656eec2efb3e |
Hashes for kaldi_native_io-1.19-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e9208ff04a9b2436f765ba968fe5f2281c93b72978aea504697643183e9109b |
|
MD5 | 1608482e93e73690e1f6d2672a9b7396 |
|
BLAKE2b-256 | 40a63015b30b74160374cfe17462645075e21c2147bee202ce2777e49d7e1a25 |
Hashes for kaldi_native_io-1.19-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c94cd9cf829ae0e8cc1ca4f797212da592dede6bbd56b46acc50530ee87b326 |
|
MD5 | 3314deaf175403cf502d12f6e7de364f |
|
BLAKE2b-256 | 2e58d0da5743fa835011316210137992dfc9ff95fe5aca6fb064adb66f0f3a2f |
Hashes for kaldi_native_io-1.19-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41b46cdad7485074fcaa46c3aa8d5ef2afa00ac5604c9a8f27d6a34f9d7a74cc |
|
MD5 | bc9a5a88cd70919ae9e292faa642c36c |
|
BLAKE2b-256 | ca74f6bd733188bbd1a750792f5f0295dc54893875bd7cb248db35ed11e6c4d3 |
Hashes for kaldi_native_io-1.19-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17d3f0b28bc94bd05c144ae3dcc7765af9b528ec2333eb45f0dfbb5416d0e3f8 |
|
MD5 | 5b648a70ec6bb3605ed999e5986acfb8 |
|
BLAKE2b-256 | 7a1d7b93785bd88066757e2cc6344f7520f59f349dd4cd4fdf0e6e4c421c41ff |
Hashes for kaldi_native_io-1.19-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 301bb1adb34d908e5f44fa19175a21705b2dbf9343b46e3137b9052bde9b7210 |
|
MD5 | a47d925b4ce351f109b079a2faa22cce |
|
BLAKE2b-256 | 1ffcfdb8c5ea0a0f993f0b660e04729513bc718c3efedbd4b63f138178a9f3c3 |
Hashes for kaldi_native_io-1.19-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11c6efc7303f99c592f5b78eb66dc6a49331f6a76d1ddc223ea0638caa37f74e |
|
MD5 | 7af8283d8cd8afd9696253c128740d02 |
|
BLAKE2b-256 | 72413a56624f4d237395ddf3a333c6ce6d7b4caa5e1a1bbc4ef0fe936cd9a165 |
Hashes for kaldi_native_io-1.19-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae35dd92ee20adae21924ff589a2153b6a45344ad445ee2534c9e8db49f77398 |
|
MD5 | 77ee6475cda889d1338fa907f253fdc4 |
|
BLAKE2b-256 | 3365568cd49f851f5ea6224bb2873da534d938b394b37ef5a417e265f176dd05 |
Hashes for kaldi_native_io-1.19-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 376ca62d62a09472c82aaa0adedc69e5ab0d06c9b408baa9ba37d950099871d1 |
|
MD5 | f2299e295496dc4d5c66448ec7e708a6 |
|
BLAKE2b-256 | e7fb80c20fd649810770cbaa73f6d4cbbab2cd3b1f69b5de27fa28f8aa90d346 |
Hashes for kaldi_native_io-1.19-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1514bf981d66b61a8274af184a4dd491e8df9d8374f83bfe10c6bdccd531ab28 |
|
MD5 | 7beeb71b77858d86daccc3cd177a8be4 |
|
BLAKE2b-256 | 3a560459f847f256eaaba65d9896d185f784a846da6631d81e897a63b5ec71b9 |
Hashes for kaldi_native_io-1.19-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 050ed097b91d64a59fe0f753e55650c9799a63055674830e5bbec9b131e05e82 |
|
MD5 | 7c44e189d652442ad0d9102d206e380b |
|
BLAKE2b-256 | d5f439a98e45490b7d77028dfcc9af957367e6d07944300e8d8a87965f5e240c |
Hashes for kaldi_native_io-1.19-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c9746e63b00121a4dd557bbf634fc253d889f25ab22dceeb3eb9e8a7c32aa2a |
|
MD5 | a97de85623f4f7f7ac26ad3307f57dc4 |
|
BLAKE2b-256 | efeb42a8e525a3b03d4bdf8723442a5a85779b4d76aeb20454c406197cf330d8 |
Hashes for kaldi_native_io-1.19-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8022e43b3a1efabd39363fef02d73283c578f932e60c32fa909b24cc181ac144 |
|
MD5 | 7ede10d3fde33d710b0fe61b3bf5c2e1 |
|
BLAKE2b-256 | 0ea1130b57b3184c5460ced756db01bdbb1acb11d278085786980ebeb5081d46 |
Hashes for kaldi_native_io-1.19-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 909046abb4ee9fea11ebf96f7c24acc2b51dbf019965faaacf60c3fbdb6af5d1 |
|
MD5 | 27663521d8598bf4fe05dffd72cfba8c |
|
BLAKE2b-256 | 6ff7361367921ab2c2e29bed6f88334cdf40ba30b2b7ee012d186ea87d58aac6 |
Hashes for kaldi_native_io-1.19-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc1564e42a3b521cab96cf9ebeacbcf2240fe2ab702b515e11b8c162b51638aa |
|
MD5 | 48fcb66139de2b0039bb5c5d8b6d2bbe |
|
BLAKE2b-256 | fd1c260e2da9d0943ac253ae52d62acd4a8e54c6a8eed7365305db600daaa5b6 |
Hashes for kaldi_native_io-1.19-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c70a0e481ea97191da039e7024d6b69f76382d6c7602f385549e2bb55bdca17 |
|
MD5 | b8ad729b58e0558a5e75a3647af13940 |
|
BLAKE2b-256 | c224d63bd303cdd6a4ae0e757f13a7d130df8f1007a46aa89ae14eec2e135416 |
Hashes for kaldi_native_io-1.19-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07baf816923641066e8bf145d830e292ae7d77f411582caa14cbbbd9486b157e |
|
MD5 | 410cb3675ce40174be674ac7fa88c619 |
|
BLAKE2b-256 | 2ec3ea5365701c9d115662b5848804bf2873402a4e56f664df01e981f7138966 |
Hashes for kaldi_native_io-1.19-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba34ed3e1928239ef25b3716038f1d649dcf955640e9a7b42239a1805e34781a |
|
MD5 | 7334c53d85db818904adaf9e09d4284c |
|
BLAKE2b-256 | d132974ee43c93bd8eee5dc93d06d96b63d99cb3af9cbc984299562049d7d5b8 |
Hashes for kaldi_native_io-1.19-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2685a80dc6b338c4f914307b9386ed0b65595f75ec20d921e3325b6fc388e02d |
|
MD5 | 9584191940c786e355e38e8c73a6583e |
|
BLAKE2b-256 | 230ad9dd357f6c97522cc2a8851ed81e5a1c49bf124e7b8f1dd03b5284aac6a4 |