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
File details
Details for the file kaldi_native_io-1.22.1.tar.gz
.
File metadata
- Download URL: kaldi_native_io-1.22.1.tar.gz
- Upload date:
- Size: 150.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9d69d91226f564865dc4e5d1805a849c646228e594d48c8f52ec5fb912f5db7 |
|
MD5 | a8088ef2b01d4189e2b91a8b2e7e1ac5 |
|
BLAKE2b-256 | 3828d9da9a2f520f29e477d19b7101b3d73abe439f4b9563ecfee3de07feb8c8 |
File details
Details for the file kaldi_native_io-1.22.1-cp312-cp312-win_amd64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2f278448de0bde68ad85af0324aa3215ec1cafd0063a6ed076c9171b5028eed |
|
MD5 | ba49b314dd269c58f976838c34f44133 |
|
BLAKE2b-256 | ddcc35556f549eca059299d895e011a25275dee4a627bf338a62ae592948e6bc |
File details
Details for the file kaldi_native_io-1.22.1-cp312-cp312-win32.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp312-cp312-win32.whl
- Upload date:
- Size: 875.7 kB
- Tags: CPython 3.12, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32a6097063982e157ac3abe3cd9fc8d58f298b26a2349db259b33e43b82a465c |
|
MD5 | 3f46104721a0938eacdb6ae07f0f2390 |
|
BLAKE2b-256 | 1956eb58a1b54364ec9c221311a3a65367752af94276efed524a7f5f8a3dcccf |
File details
Details for the file kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0953a28bb9cbfe084a7616b06d87f4ff8c4fe222939e08039e8cc77312c36c6 |
|
MD5 | 9bdf27194ab9f9b9ff6bef7c710c3758 |
|
BLAKE2b-256 | 865a9f4dfc1db8c2c68949be10c894f4461919f06762d7f51345d1192ef12de6 |
File details
Details for the file kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab143a6ff34b2f3b0df5f98719c552b995695e71077393ccfee34b534eef3cda |
|
MD5 | 4e0cbedac9a5ee6cb3b6053b88a5dcf1 |
|
BLAKE2b-256 | d16bb0aa0f0ceb72ae89433158786d6b462e21dbc3c5d2a324047613c8bf451e |
File details
Details for the file kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b4d1f60bf3e737b394f2ed759c8353e864120c10a9181f19906a2382844c54d |
|
MD5 | 8d4e7c286af048bf4312d98b673fbd34 |
|
BLAKE2b-256 | 9dcd9b79f835a18becb493bb89a213fb2cf7941e2bbeca2aa6043e0902d04ece |
File details
Details for the file kaldi_native_io-1.22.1-cp312-cp312-macosx_10_9_universal2.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp312-cp312-macosx_10_9_universal2.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.12, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5af8aec63d554dbca7d7c9ccedb1712497557b578cbfde090d2fed2c7e3cd4ab |
|
MD5 | bb35b0791c6de9656ea4927373e64047 |
|
BLAKE2b-256 | c0daf85a5dbd9517e1eccc1b5854f9b6d1053621c9ebf581faea1e973946b4a6 |
File details
Details for the file kaldi_native_io-1.22.1-cp311-cp311-win_amd64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d5010e1553836ea020e8638476cc81ffd27536caf4bfae7b5b0e785180ff2ab |
|
MD5 | 649875cd8e4cbc33fd178a576058cc4a |
|
BLAKE2b-256 | 3851f41e30b628ea933d396417f57186e31ed5d5c78cb5f72f342418f2aad737 |
File details
Details for the file kaldi_native_io-1.22.1-cp311-cp311-win32.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp311-cp311-win32.whl
- Upload date:
- Size: 876.4 kB
- Tags: CPython 3.11, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1da2c31174406a213b45b9b6d3ca5a43d96d05727b2f56fd4ecdbe2f35c8caea |
|
MD5 | 5e6a5360a5c5b356651e255685784707 |
|
BLAKE2b-256 | 7c34739042deec44f16f5d876e2e4052833193949d5d7ed73cbc4f18021e4384 |
File details
Details for the file kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b21218352bb759eca08776a18295f58c6cc6d6647aeb0ab91ee2b9918299895 |
|
MD5 | 04b83da9bdbdbfb7a2849727a702b403 |
|
BLAKE2b-256 | 5d4be84544745104add08dfd39749c97f0150c6fbbd47e07ad3186a2a9d96aac |
File details
Details for the file kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1363457e9cc1d253640e385768c6462fcdfefc9cc0426cc9fd8dcab1867165d |
|
MD5 | 0ce90f5a566ab4dd52257235c3d8f385 |
|
BLAKE2b-256 | 8d87ffe167081349adc294d763929dc0a57d0d4d37a145906456c092cab8e4a5 |
File details
Details for the file kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42a632371a4e35be04353b03b1ca02be2febbeaa712effa9f716512cbe85b0f7 |
|
MD5 | 96fa2dfd78570e7190b059158c132546 |
|
BLAKE2b-256 | 743ccea211e147ccc1f364f045708abaca9827d8f3e7b570b5a9369b40bb521f |
File details
Details for the file kaldi_native_io-1.22.1-cp311-cp311-macosx_10_9_universal2.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp311-cp311-macosx_10_9_universal2.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.11, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dfb62584e3bb9c97d6bfdbd5d3bb5bc30bae1b5c5d2e3a4ebc2c28d9ed72958 |
|
MD5 | 550bf4b8ea7926ebaf2a67303ec516db |
|
BLAKE2b-256 | 3800f3f0fb9e8c8a023e04f502bacbb8f76eec5ad4ef20b4d001b409cf2726af |
File details
Details for the file kaldi_native_io-1.22.1-cp310-cp310-win_amd64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7145484b4d2c301dbd16b0c542f5ffc32333f1603a00cab3027374934386d536 |
|
MD5 | 264794ed9ad8b1f63130cb713c315646 |
|
BLAKE2b-256 | 47f52c34190be6b393616d5ffca9ae6a5f283ac696621c72e4d446679720d039 |
File details
Details for the file kaldi_native_io-1.22.1-cp310-cp310-win32.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp310-cp310-win32.whl
- Upload date:
- Size: 875.9 kB
- Tags: CPython 3.10, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eacd4e5b69fdfdb157b8884572c9f51feab31b578428336445c5c247ede3d2c8 |
|
MD5 | 7a4367c2fa419b57b16d460fc2b44b74 |
|
BLAKE2b-256 | 252bfb2f160fe1cf0e9eb8430a75facd9eff63f4ecf6cdf11055686b0994a838 |
File details
Details for the file kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2bb3aa50a3aa8a054972906ed9d1613d2b83905d1b8da725d4b6924dddfc175 |
|
MD5 | 9a33f44a82b009c11007d5eb43d410e2 |
|
BLAKE2b-256 | 0820764c5232fc822dede2505194b7a53c1f08199397c264c28c5f70899c4a14 |
File details
Details for the file kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aaa94ccc1b621a1603f8105ba96b5f18a5bc162a6bc95159abe655adc23378e2 |
|
MD5 | 64455fb4903f9d468570fd3d281c057f |
|
BLAKE2b-256 | 143607e0478a21482d45d3853635c6f44e1c05471048eb08199241fc6b8ede45 |
File details
Details for the file kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bedae8aacc794cd6a9e9edee285c2966c656879497328b539df71c34573d47f |
|
MD5 | 5a120287d7277226d7cae1a5fbf8acba |
|
BLAKE2b-256 | e368019660269b71f148bbabb95974872c17bf3873f5537b9abb6a2da4caa695 |
File details
Details for the file kaldi_native_io-1.22.1-cp310-cp310-macosx_10_9_universal2.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp310-cp310-macosx_10_9_universal2.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 165a606568814439cb8ad53b44c1a002edc8704076674de87b090ff7c1697468 |
|
MD5 | 495c9dc58a3d71177f7d66e948588043 |
|
BLAKE2b-256 | 214ae1436d781a9a2d7f6cdffae6f35122b67584b0309b311befdb539edbbf6d |
File details
Details for the file kaldi_native_io-1.22.1-cp39-cp39-win_amd64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82107bdf51dcdfd1012bc2d7167b12da6374bc5149fcf8356d0797fa5db4a31c |
|
MD5 | 6174e3111ce307d1b87bee27f66ae0fc |
|
BLAKE2b-256 | f75f48b58a920f95355b84f6f4fd771e6d5a45562ead5bb228eb779b34687335 |
File details
Details for the file kaldi_native_io-1.22.1-cp39-cp39-win32.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp39-cp39-win32.whl
- Upload date:
- Size: 876.1 kB
- Tags: CPython 3.9, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 347cdba971b485b1a076ab9d9052093b9403db3f628c821848cf1926c83c09a6 |
|
MD5 | d675df39362691f2b365e64fb072276f |
|
BLAKE2b-256 | ecd3923b2d4267fa3a72c378a678feff419edff3903360dab5a7b4f071cb8a69 |
File details
Details for the file kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dcf72125c7612bab277d645bb3a7b55767decd298c556b1c36502b28b7defc3 |
|
MD5 | 4387034eb1054a8ead01fbd023bc9e71 |
|
BLAKE2b-256 | 7f8279561bc4fb466916313833ac2647d35ae11c5241f0e02b67c5c702852acd |
File details
Details for the file kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51e2a5f3652b9d7f06d2626209e679d78350805e2ff014d4cf8f42f2d15f2bc3 |
|
MD5 | 42bf393a4ef125d3b6701de5acb37876 |
|
BLAKE2b-256 | 3231c7c1fb63de58e36bc187a5840476ffb6d25a1f5871ac480dde39dd0548ce |
File details
Details for the file kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0eb275d86cf5e57c35e78a15dc67843c527d523a6d4de355f1a429aeb54df625 |
|
MD5 | 04118a67ecad3db1d352d5af6d274e53 |
|
BLAKE2b-256 | 139d138d62cdd82057f75b599145929a69ac831b8dd202ea461a739a96b97d81 |
File details
Details for the file kaldi_native_io-1.22.1-cp39-cp39-macosx_10_9_universal2.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp39-cp39-macosx_10_9_universal2.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 014085a7df03a2871cd594a67e24cc3687d0a9f23666da158a1ce2c3d6131e03 |
|
MD5 | f6d1765e365a5b0b64cfbb8f48c24a44 |
|
BLAKE2b-256 | 5d9c1600d85a662d554ccd10f951dbd52b343d05d39f7a6fafffd86b52fccc23 |
File details
Details for the file kaldi_native_io-1.22.1-cp38-cp38-win_amd64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fafacb39fc5f9c6bd9bfac5b8d3e969075af8ce972bfb0a522f87fb4ec264b29 |
|
MD5 | fc9d0220ce0e2f8d5479a223a0cca55e |
|
BLAKE2b-256 | 598d6431442041aaeb96a52c8c80b662bf249e3b1158b8f5c7e9ea0f407cfac3 |
File details
Details for the file kaldi_native_io-1.22.1-cp38-cp38-win32.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp38-cp38-win32.whl
- Upload date:
- Size: 876.3 kB
- Tags: CPython 3.8, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b1c841220a04917cbefd41092b3fb2c050764b14dd3e4f69c185c259bafcc41 |
|
MD5 | 19df807fc3ecd627faf10cccf459a2c3 |
|
BLAKE2b-256 | 47d6601e96b9f1ab313e062f2084ff063f648cede12df0db82d57f9382cf9430 |
File details
Details for the file kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51e3b3d32ab3cc4038014468a76cd2fec532b4b3521f4daaa00101fe271dc05f |
|
MD5 | 2c5b4033d35d31c848c68b7832d4c352 |
|
BLAKE2b-256 | b7018211cce6bb949b76d3f8a2526559b6e9cdc3c9aadf66540ebcdfe981118c |
File details
Details for the file kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2286a36d8fa96e6f79c18fc23f3e1ac7280cfb011f53d5a1d87fc624371039d3 |
|
MD5 | 23102b3a4593503ab9de13f8b677e88f |
|
BLAKE2b-256 | cf63614773176b97d9fc76200f36d7d8776022ba6148419033c359edf9502fe5 |
File details
Details for the file kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f29db52fff28ccdafa7448d39314081729d52b075e1d29ef6b51ec9fdcd0b04d |
|
MD5 | f9f921867b5b36caabe85ae2daa9db0d |
|
BLAKE2b-256 | 7d68e130d88dd4d5a5b5a2aed9edaf745343cbbdf012bc2766f00aea956c22e3 |
File details
Details for the file kaldi_native_io-1.22.1-cp38-cp38-macosx_10_9_universal2.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp38-cp38-macosx_10_9_universal2.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.8, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e64392d9349b1dccec3ee4d485edaec51c17bbdddb56f48928aa75c9603c6ee |
|
MD5 | 945934f87e9df6cd24559b0ae53d8828 |
|
BLAKE2b-256 | 9f16bca7ee097f55be16bf5bbfeaebe3b5bf2c2d54327c056f46abb8a83e179b |
File details
Details for the file kaldi_native_io-1.22.1-cp37-cp37m-win_amd64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp37-cp37m-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.7m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4febf9f7f4d68fec847d6c001b9a29ee9d4285bb0b220b0059ec720d69ed015 |
|
MD5 | e1fb71739688685ef6be3f6cc08dd098 |
|
BLAKE2b-256 | d45736b8a6eb58b020bea53d4075db981209c0d90d349d5f0373c3427195d8fd |
File details
Details for the file kaldi_native_io-1.22.1-cp37-cp37m-win32.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp37-cp37m-win32.whl
- Upload date:
- Size: 876.3 kB
- Tags: CPython 3.7m, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 246631310bb1b7aa22726f4638576c7e543e293bd991435332e7034c59becc4c |
|
MD5 | c1e56a9671ea2de60a3649a2a3ca89f5 |
|
BLAKE2b-256 | 4cbdfc578456c186debcdf471f979257b6bd22ac301ec7a3f8e9732ec6ee96ad |
File details
Details for the file kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4941a7666a68744d4ba6b96f870c61fc8690c3d8decbf110384bb9676441ca98 |
|
MD5 | c19433a6c902fad9f6cb3f92da18eb50 |
|
BLAKE2b-256 | 7ec3cbb91cb975d2ae88589540d436a144db88f74d1c4c6a31a0ab0107175c32 |
File details
Details for the file kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94b1d5073f5394103f9c794d55deff08ed8db26bcc25b159b754bc2f867c444e |
|
MD5 | 563daa144a6134abcd4acb97ed2d62e4 |
|
BLAKE2b-256 | 1086c5eafb1653822765f971d20c9b56d0ce4de9643929207a8298faa19ec352 |
File details
Details for the file kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf92f8de74d30027a8d9c44bc66bf645c9ba734dc358722738e600f450447717 |
|
MD5 | 907043176fdbfac7228f27344095d65f |
|
BLAKE2b-256 | da3ef4bcded2a2a053ff15cb0e44df6ae7d235893031b7b99ae766b2e0ad438d |
File details
Details for the file kaldi_native_io-1.22.1-cp36-cp36m-win_amd64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp36-cp36m-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.6m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad52e851d4bfe5eb7b77e58e1b7df82b5fe237051fcff9840cf5a345d08d22c0 |
|
MD5 | d5e6a50eb892b9ce8ae45121f56ac7e4 |
|
BLAKE2b-256 | 8de8ddecccc1cad261352690747a59d3a6571b228eee0aaccfd16ad66a8a0180 |
File details
Details for the file kaldi_native_io-1.22.1-cp36-cp36m-win32.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp36-cp36m-win32.whl
- Upload date:
- Size: 876.0 kB
- Tags: CPython 3.6m, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ef2904e6a12de30870a4aabc9073ee71f05f6211c22c6d39d5529e56288c707 |
|
MD5 | 4dd7348c86668d4888eb48677236481b |
|
BLAKE2b-256 | efe7a54429fe312263f384a2f8ee91e7a0969c0def6881f4672d7d99cdd24001 |
File details
Details for the file kaldi_native_io-1.22.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.6m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5699c3bb438aaa890b730bc7b1d66297cf8e1132bba675b60197c0a26e9b1913 |
|
MD5 | aefbbf41368bbee3e3c82faa000e7c2d |
|
BLAKE2b-256 | df0ecaaf6f50619e0282dcc537de1f9306fbf30a2091ca6018930ace0d30fb85 |
File details
Details for the file kaldi_native_io-1.22.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: kaldi_native_io-1.22.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.6m, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f0d5a50f9aa414955f116c12a15c9e6c49eb5d4c1fb6dc0e785382838b81c5a |
|
MD5 | 9e2f4f780a8b14758e662d0024d86783 |
|
BLAKE2b-256 | 0dde4307700c23064cbec9fcc71bb85540d45f0111b187e4515365b089037438 |