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 Distributions
Built Distributions
Hashes for kaldi_native_io-1.22-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f3f4530c74a431a9cbedd1a1d0ec94e89f8a18dc994efde433a2d29a0b9165f |
|
MD5 | 3a0e19150c16c0603d8eab42f62ec709 |
|
BLAKE2b-256 | 6cb0794b9ea3226d3fca8e3c847e224e86479dc9847740b2265e0b33541a24af |
Hashes for kaldi_native_io-1.22-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 231543f13dcb01b676000ac6c9af5b309a798f747c6fd46db0606a2d0c7887e9 |
|
MD5 | 71c13cfd0180888892fbca50461625e0 |
|
BLAKE2b-256 | 0539eb48ecb3c552cd7cc02470b25de2f1c955307966488dd1afd09929b5f9d2 |
Hashes for kaldi_native_io-1.22-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a518363200687ae3193f367af7611d6bf4ad14ee2088e5b044a084e8f1854793 |
|
MD5 | 0a4f1f2f057dff6a16ecde7670a8cfb6 |
|
BLAKE2b-256 | af669b78c5859036b3c5d79384c2f5272603ca8ec7074fb06e483a8d8407110f |
Hashes for kaldi_native_io-1.22-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71b9eede1cc4d58fecca560cc2e5263b17d566829cab5b771a64e44d047e060a |
|
MD5 | 8d37a4fc8d2825596f6c8b0b9114aa3c |
|
BLAKE2b-256 | f4adeceb62c0f0168f43bfe42a4a72b6e3e219ce969f79bc244269c7ba9dbd66 |
Hashes for kaldi_native_io-1.22-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5667634cde6306ff053eb96fb0bbb7e69deb94bf63b87055f81ec8849819a7fa |
|
MD5 | c64d86c229dfa80a1df5fde784966184 |
|
BLAKE2b-256 | bae8f5ea1d010af6eeb899ae804bd60c711887d2daef6de02f7357e59492324b |
Hashes for kaldi_native_io-1.22-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 717af7275518e94314ccd96069657fe139346580ea188f0dbf308536ed3e441c |
|
MD5 | 4f09e798928fbf4f629565efb63b8e9e |
|
BLAKE2b-256 | 565bfe44682f53261670c6c20061f10bda55afe208c8dce197ec3e8d73978278 |
Hashes for kaldi_native_io-1.22-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0691549b192ae7d50831c1fc41f0f17550119634284d1ba78a810c66142ff356 |
|
MD5 | 5972a85ad9d6823660e71761dec1b64f |
|
BLAKE2b-256 | 0be5513f3dafc447e7959d6d112a8fcefdd7181d11b7bbcb8062597bfa927043 |
Hashes for kaldi_native_io-1.22-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92d8a071c3297e22d081744d19c15121ce72fcf2ca0447c7cb403e30648a741c |
|
MD5 | 943b258f3b0134931d59047fbb2b3acf |
|
BLAKE2b-256 | a72e13b41200c6d1eb453df1d546e9812beb03a0ec61b7e86e74c7979e700d71 |
Hashes for kaldi_native_io-1.22-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6614fc69f8eb1f28425b0ccca3bfa0a8ca6f605e4b40961628a5f501e1f1746 |
|
MD5 | 6e7d30faf528344246c9d367e9322aa2 |
|
BLAKE2b-256 | 5cb6062ec37742838156ad83ab9060def3a4bf82171ede18199ae75a92056e87 |
Hashes for kaldi_native_io-1.22-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4efdd81a6915c5b1a0a8532dffbd5f985d14141931a6646ab188c3906645460 |
|
MD5 | 2959a0530c233a288911cc4f7d20a6aa |
|
BLAKE2b-256 | af7f0799b23acd32acd58994be3cf772d5bfd6671186f38db1a22de4759be165 |
Hashes for kaldi_native_io-1.22-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9c1e3ddbd8ee594b24f64f511f2fd596863571b1f2c589311b46a67d2f43ed6 |
|
MD5 | e577d7cd3a0ad0ff694b048f90468774 |
|
BLAKE2b-256 | c594b23c6be87585a36a7de4535d91616d752e793b6c1b5b88b4cc8e6aefbd4f |
Hashes for kaldi_native_io-1.22-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bdcf28f507170d96f83bb38f970f1db315471dc9a8c8a553feba9688a81a9ec |
|
MD5 | f8edc47dfa066a8ecb6d228272003508 |
|
BLAKE2b-256 | 4a2fb7f51400c544d45420442e90ae69cef6d509fcedbcd399835f5edd216780 |
Hashes for kaldi_native_io-1.22-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd02d49ca83c0168424f5f6b91d74e5d39fbd7c26498b581d5a81f10f6f1b8ca |
|
MD5 | 2a186e204d90bcab5d5c140563f4d7fc |
|
BLAKE2b-256 | ab389e544eaa2535fb102435a83db01e279b2880e37056fc688dcb179d83d265 |
Hashes for kaldi_native_io-1.22-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 705d6b3747ce5466ecae88a4db8614ede161b651f7ec0b5635c72568a5ba3edf |
|
MD5 | dfbd9235135a8aafadc1fbe3a44ae997 |
|
BLAKE2b-256 | 14b8d3c16b3c171804534384cddaf9cd37a0be8015ace6b149c9911eb65420fe |
Hashes for kaldi_native_io-1.22-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7c571abe81ddaf6ba8061dfd8727d2d0d1416dd9f16ef3ea231e3e4143fb109 |
|
MD5 | d4ff8c6370e87db2b39d778b9866a2b6 |
|
BLAKE2b-256 | c365a5de47c1b5d306d00a6423fc51ad1deaf35da77e6527f4e0d9c42d51b713 |
Hashes for kaldi_native_io-1.22-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7986a3c9df7e6ab7a5cbe78ccf9ea68d8b6131ccde88c548e02b7df7783fb67d |
|
MD5 | b40e87b8c1111e72c0286142966366ff |
|
BLAKE2b-256 | 3bf5b5d763fff74de1a6a4d2f1b838322965dbb54829919ba1a60ea5be40ca5b |
Hashes for kaldi_native_io-1.22-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e67a657a2ae6dbaa15c0ed81f2e19d1914d9c4f975aae7d671ebf44f027e03a2 |
|
MD5 | 7f205ddc389182d54b86e15124a307db |
|
BLAKE2b-256 | b902a17d00f04bf11314dc4124aee986da3bb2118d78f6ec13aec01a7e297f44 |
Hashes for kaldi_native_io-1.22-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b56d68c643e07ecabdcb70e2209dd735050014772431ea038ebb6961733acf65 |
|
MD5 | 9262ec6965c71cc62a4f5ee221b97c80 |
|
BLAKE2b-256 | 729f6bff30002abe63d1b3c91a721af355cbf80c3a2b6a08842a2b3b3ff783a7 |
Hashes for kaldi_native_io-1.22-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3aab7ae2411f77fbe6b9b6c283d7b91faf48f3f20434c1a5f96c48cccf0889cc |
|
MD5 | ae03fd1a0aa4d8c7c193bcef5389b872 |
|
BLAKE2b-256 | 995063292704049ca1b0ddca8b237c9d2b0fd41b44ba4da606c3c68e3de02a37 |
Hashes for kaldi_native_io-1.22-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3016feab1e2cdf51565b9f9b47978554aea1df06c89582ea1336a4b591fe386 |
|
MD5 | 65c6f16cce0375d61a360457d56801a7 |
|
BLAKE2b-256 | fe3208be9894a1213d01f627a58ebeb2c35248493c497f4aae1d165686b1af47 |
Hashes for kaldi_native_io-1.22-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3ad702e615ec507d9484cdba18e504d1f069f254d3fce4bd5c1c488e6ddfde8 |
|
MD5 | 438af7e2455efba666630b78c5c2d9b8 |
|
BLAKE2b-256 | 12318659eae78a3ec3519810d5c31f63e74f0062a1f1dc4501da3cc6031da87e |
Hashes for kaldi_native_io-1.22-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ce4578c55658fc1d6b4617928ce6f4375946faafe8b131b30bacd0c492d16ee |
|
MD5 | f8cc8ed8d3a99f386a1b91c834aa2c63 |
|
BLAKE2b-256 | 517bfb7a499a993a426fba756a650a62b0f802695246408b0c7c917a428bd825 |
Hashes for kaldi_native_io-1.22-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 149a25358e2e668cd21f049d5f31a1626f1da39810233be1e3eb70f10361512b |
|
MD5 | 24fb997add78d18315a1343ad1d7f02a |
|
BLAKE2b-256 | d10ad761075d064b18e2d13c5de0523a9f4c1462f2ce9af21a6ce1527126297f |
Hashes for kaldi_native_io-1.22-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67113dea7db74179b809bf0f590aca9feb8e84ac2ae5f7b6dfa065ea01a5578e |
|
MD5 | 6e80f05d78b730a65898ee6615387d98 |
|
BLAKE2b-256 | 83a851174a56657a75cf1297fd2b804ee3971144c35825d0d9825d8eb69d5015 |
Hashes for kaldi_native_io-1.22-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba3dcbdd78fa651d24e8aa7c1759fa3680c0269fe3fe9bc918b9d1a5bab4a3e3 |
|
MD5 | 462beba0ca35bfdfdbd76dec80ff5b7f |
|
BLAKE2b-256 | b93bca85062faa68bb90d543533fc2847fc0429e8761b06992fd5977c099fb00 |
Hashes for kaldi_native_io-1.22-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1933dfdcda3d430483a20dba4088460e09d2321415af8a0aeb9eadde611273bd |
|
MD5 | 5e1506db97c5c6e1eb42e910415ff70c |
|
BLAKE2b-256 | 979c8311e09c543bc7c8bc079b610359f705f6459d39cd68b1fef0a8a41ef2f7 |
Hashes for kaldi_native_io-1.22-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e52149a43ee15d902cffd7132dea513be6825bc17972d6b0c0a5dcdae1fac021 |
|
MD5 | fce3e48c5150313aeba2729314af1f2c |
|
BLAKE2b-256 | 90d64a84cf8329bd8ad88259f6040bd240e8cbf2e62b7e3c62d89e7a4d6a2854 |
Hashes for kaldi_native_io-1.22-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06b56da5858444d5fc3aad324cceeb9ab6217d4b71608afb2932054db7f30017 |
|
MD5 | 939b3ee844888a0a6418f3638feadf35 |
|
BLAKE2b-256 | e7e645d07b3a794f2f398b5c3a904a215ed830bc2a282112baf969b66c433df9 |
Hashes for kaldi_native_io-1.22-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97e544faa7da73c6320f867f068a13b7145cbe052750993e85d8aabfdc28a4a2 |
|
MD5 | 55e12a97aef3d46a3a55b8aadaa8e293 |
|
BLAKE2b-256 | 690f8ebdf2145d4cf6bdc8ce5026c7f1ff64cdd23eeee6a4b22bfdb462c6f1b2 |
Hashes for kaldi_native_io-1.22-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 434cce98aa5226a113ad620205537bb16722bf92bcb90e78b97847fe876eec96 |
|
MD5 | c7c059f77afc7b3141b7ec53110f06af |
|
BLAKE2b-256 | 9fc772b0d97c6afb4f740af8fa12f10cb8886b78e7935300b0d6cae33aaf9ca4 |
Hashes for kaldi_native_io-1.22-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c99ec7c6d93f5b3badecbbfcd7a9bce60a2a7574b7c859ba9f0c5e1b32026c3 |
|
MD5 | b8ea7c2c1d65ac72365fa5872ecf315c |
|
BLAKE2b-256 | e8429baa2e9d370c1e9dd25f4786cf3ae1ba55ba92030c15808b1ac6fd582737 |
Hashes for kaldi_native_io-1.22-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4551a6c42bd8c9563d6dfba31d5456826331b8fcf799ad231ea79392d8ba4df2 |
|
MD5 | 12632e14bc1e0154e9c4fe17de16f8c0 |
|
BLAKE2b-256 | 34f0e9349333ec0ab656911914592fe46da5d546d980a25a7fbd94b3802a9e37 |
Hashes for kaldi_native_io-1.22-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40a53e99facd276bff4361be48be9cc93cde038e68fe26ac8e2e0d4ca21145be |
|
MD5 | 75fdcefc35c0ae824004c7c2e721eccf |
|
BLAKE2b-256 | 6ce1eab1f623fa753ca4d0577ea3ad33f86a987fb244a962680dd99df7ccda9f |
Hashes for kaldi_native_io-1.22-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd45aa14b5ac8f72e0f765e7a506644f7203fe3a5352747730e6e1bf88d640be |
|
MD5 | f256d55a2fbb0d1186828a912ae01ba4 |
|
BLAKE2b-256 | 6fd2d1af8c2e1a302e01176088e62e979a0ace690364340dd520ac824d36001e |