Skip to main content

Keyword spotting decoder built with PyBind11

Project description

Keyword Spotting Decoder

This repository provides a high-performance implementation of a Keyword Spotting (KWS) decoder in C++, designed to accelerate decoding in Python via pybind11.

KWS is essentially a streamlined beam search algorithm that looks for specified keywords directly in the output of an acoustic model (AM). For example, consider the output from an acoustic model for the WAV file "tests/data/George_crop2.wav", where the speaker says: "AT ANY SECOND AND JUST GO AND THEN WATCH EVERYBODY'S MOUTH DROP I WILL NOT BE OVER"

Sample acoustic model output

The image above shows the first few timesteps of the acoustic model's output for the given text (for clarity).

There are two main approaches to searching for specific keywords in audio:

  1. Transcribe the entire audio: Convert all spoken words to text, then search for your keywords in the transcription.
  2. Direct keyword search in the acoustic model output: Search for keywords directly in the AM output.

The first approach is prone to errors due to the influence of the language model (LM) during ASR decoding. The LM may alter the output to form more probable sentences, potentially causing actual spoken keywords to be missed or replaced with other words.

KWS addresses this issue by searching for your desired keywords directly in the acoustic model output, bypassing the language model and reducing the chance of missing keywords.

Installation

The module is available on PyPI. You can install it with:

pip install kws-decoder

Usage example

the following code shows a simple example that this module could be used:

import numpy as np
from kws_decoder import KWSDecoder

labels = ["-", "|", "A", "B"]
blank_index = 0
decoder = KWSDecoder(labels, blank_index)

# you can set/get decoder parameters using setter/getter functions
decoder.set_beam_width(128)
decoder.set_beta(1.05)

# don't forget to add keywords to the decoder
keywords = ["AA", "AB"]
decoder.add_words(keywords)

# create a dummy am output
logits = np.random.randn(1000, 4).astype(np.float32)
exp_logits = np.exp(logits - logits.max(axis=1, keepdims=True))
probs = exp_logits / exp_logits.sum(axis=1, keepdims=True)

# then you can search through AM output
decoder.search(probs)

Algorithm hyper parameters

Here is the list of the most important and influential parameters of the decoder:

beam_width: Number of candidate sequences (beams) kept at each decoding step. Larger values can improve accuracy at the cost of more computation and time.

beta: Longer keywords naturally receive lower scores because more probabilities (each 0–1) are multiplied together. beta compensates for this length penalty: the score of a keyword is p(keyword) × beta^len(keyword).

min_keyword_score: Minimum score a keyword must reach to be accepted as detected. Any (partial or complete) keyword below this threshold is pruned from the beam.

max_gap: Maximum allowed gap, in timesteps, between successive detections of the same keyword. If two detections end within max_gap, they are merged into one occurrence whose score is the maximum of the two.

min_clip: Floor value applied to every character probability to prevent underflow and improve numerical stability, increasing algorithm robustness. Note that setting this value too high increases the likelihood of false alarms.

top_n: At each timestep only the top_n most-probable characters are expanded, limiting the branching factor of the beam search. It must be less than or equal to the number of characters.

(Optional) Run Sample Python Implementation Codes

The original code was developed in Python. To run the original implementation, install the package with:

pip install kws-decoder[ext]

This command installs pygtrie, torch, and tqdm, which are necessary to run the original implementation of the beam search algorithm. After installing the dependencies, you can run the script with the original Python implementation located in the test folder, specifically "beam_search.py".

Testing

After installing the module, you can run unit tests using pytest:

pytest

It runs two tests written in Persian and English to ensure everything works as expected.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

kws_decoder-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

kws_decoder-0.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (948.2 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (996.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

kws_decoder-0.1.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (855.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

kws_decoder-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

kws_decoder-0.1.3-cp313-cp313-musllinux_1_2_i686.whl (1.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

kws_decoder-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (679.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (715.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

kws_decoder-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

kws_decoder-0.1.3-cp312-cp312-musllinux_1_2_i686.whl (1.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

kws_decoder-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (544.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (572.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

kws_decoder-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

kws_decoder-0.1.3-cp311-cp311-musllinux_1_2_i686.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

kws_decoder-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (408.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (430.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

kws_decoder-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

kws_decoder-0.1.3-cp310-cp310-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

kws_decoder-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (273.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (288.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

kws_decoder-0.1.3-cp39-cp39-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

kws_decoder-0.1.3-cp39-cp39-musllinux_1_2_i686.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

kws_decoder-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (139.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

kws_decoder-0.1.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (146.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

File details

Details for the file kws_decoder-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee0331b2f5e2130b9b1db8575d16ea1fb56644f7422f5e70a3d1af42405bea1d
MD5 4544aa628c6872937d500f40f400c3a5
BLAKE2b-256 78f9ee341ae55137a8b4eb3da6fe9a70ffd5be623453fee104c3d26d046e494c

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b4c11d5cb3be250aa450ba6c2bd2f0b2120acf5a2514584144c8f9ae0119eaa8
MD5 0187ef01af400fb64d45382e5b8e061e
BLAKE2b-256 032ef31780f2cf9c46b8cb3c3b5ebd60ea7db408fe75a9815b4a9743cd56421b

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 900fee51a4c21938ffa671bf56648e9e688d28e3e82d42ba470a2df9fae3b5fd
MD5 e580e1e89d78c56398fd7f80393d9713
BLAKE2b-256 0803504c4ec94d931a2d9b7ebea1e039236b9740b65602452a6f894b0e38027f

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 446ae2a5658632f6a70bd4eb7a3a39aeb805b93970fdef2195203a35d4196f06
MD5 0f11034879ea5741d76303e752002ac5
BLAKE2b-256 9bbd0d4247b9791cb50a02968dd7c00d29575b823cb3b0ab9501e6b5b339962c

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7dcad899dfa34e0fe37c059cdd0ca57b23f1c35ecc471fec483c292876ab580
MD5 dca9a9b95429bd4c60f8665ca6660468
BLAKE2b-256 4d27d5913362c2fe90b96066f92bda8c45a3f1b84ba7d4841906de821b24e883

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a045004a3cdb06f1ea4001c1bb8ff938cbdbc5285f87df8eebc22108eeb1c58d
MD5 a53074cc902cb93cccc408f203f20599
BLAKE2b-256 b96bc1b8129a9888151b44202828f2900596fcf795924cffb20ad0d56c42da6b

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1ca6d941540964ddee70989c0b221a4795d8ad6be65926546d83eb61598117b2
MD5 dd0c19ff860eae422326cc09ddf19f87
BLAKE2b-256 df63901496b82c34e22532a4c5bfcebc4785ee2a7b534d6fe0951ea0a8d4ac5a

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5586bb3059555f6db32361639fe7529f9279cdce45a66e5a6b722d77bc25a316
MD5 60eb4c1b893539c41a75f503586afedf
BLAKE2b-256 24a02aeda27efbc893e2bc3c592d80b91e7d671c7b3e93ff9b96193169e703e3

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df9886144e90506c162b30d4c744e57ebd6fa472fef3e54ad9ae831859bf4101
MD5 c4068a9caefb4692f36d5db9aefc9004
BLAKE2b-256 47daff4c6440e9159b59c9b50adcc51c94985db1e9bc332e423633a73f05cc21

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9dc594534b76517234b92d1cbe11376b1ac130626bcbee69a9fd717f903a226a
MD5 a735d0ffe20e7bcb2307d31f8883e716
BLAKE2b-256 123352ace5c55974de0d40feac015ac35cba101a41695a009164b402a8567cd5

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 642884eeb267c96680c97e7d47fd3c2996e10aa46af2ea0f89135b0fb730a507
MD5 95fe44c7d59b7e6429b322b654b527e1
BLAKE2b-256 0a187bb51a762da662d46dc5322ed73c4f2d75595234660b180c59aab50cabed

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9485ed5b0904fbb1483f9c2efe32c3a3d04f1fe19b34a6e511eee6e769d8e484
MD5 8f6e58110ec23dcb388f0106d1dce525
BLAKE2b-256 155a67770cb0d6fdc14be9d2ce38cd10fb5cd85bda897ce4e8ffeba368d32bdf

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d87608548160ea4945555d27cee708c1492fc2efa22e552bf439ced0e96ff842
MD5 aadd389a33da6f4c4a7ca19a893efa4f
BLAKE2b-256 95521b51e9570441f0f281809340ced001ff14bf8e8979fa54fe0eefa4deff69

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5344bfe17c36e0e8f4ca4b99257fa51a4dd261fe910fd39966cb601bce08e888
MD5 a3edec2936cd9a63dd66d21769a79f96
BLAKE2b-256 a0186cc17f487ff805e99fe7ba8a6eba1c2d943ac8345724ef13742ca7d9dcc9

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 676372fcfa4536c8284346dc792b7bcc6defdebbebf75f7e854896684a4bcce1
MD5 81da57f1453da88d7550dc8711b3a13a
BLAKE2b-256 b0f32d37145c90ae1c907fe4b7dd9dccdf5d6b5edaf82dc6bf35a2bc9877490c

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f9b9c8173817fab6f501cd6e4a7afdd3eb8422cd90df8b55d0e164659fa51936
MD5 93f27f094b5115019942722515340c2b
BLAKE2b-256 6d851e488175080a843c866df7287e1267dc5b9fba32978cbb0a1790e702a30c

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e83ec09e8e06adb2c8dcf95c1e5ce8c3385098cc41bd61955e99f0c4f23fcdb9
MD5 e974061ab654288fac3c35e13d39e93b
BLAKE2b-256 7781309d09d89349a958a9cdeead3d88336ba0350446819de260afcf47b37866

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d84f03d2a0252a21d544ebbfebcc0f361dab0f0cb22cffe7f38c19ed17c71a5f
MD5 acc7cbb1148ec09c789cce96969e547e
BLAKE2b-256 5d5edf89ea7ac12b78e7845a9bae02731a9f56432501df1d76e26b0f66044d8f

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a8757d78f4684b920d0c5c0546d1aa8587b951cb7a7912c41085f15400fdc5de
MD5 8d64cab589c4fdac8b5ff721a2ebe923
BLAKE2b-256 bb436fef552a9e9c146b2fe340d028ff0e4971e385dac0a4f5ece65c030a8217

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4c794230af4c0273cf5856bd085bb3f03160acd88341629b5282d10ae22cfbfc
MD5 0b440513db9cd992fe5567a8027a38f6
BLAKE2b-256 64516ff01d750241f3684e349df2833291e02b19ff752dec93be1aa898837440

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31c168c6d5d7e1a241f6fbe2efc48a1bf1d9caa914b65ee502e7c464cf5fb7b4
MD5 8f4e106a078e911d733a06cd71825484
BLAKE2b-256 7118efac3a866bbabcd40fe34560b955744d210e6102a547e3eb3c35e420a038

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 35163edd7330e7b5988772c10d5b3c033f7c357eb577c18182530ab3c484ee03
MD5 bbf0816fda372e329611509356a0bb63
BLAKE2b-256 3ca34f9fb795975f6c54528b1b7a90b874e4cc3768f5b9b8e0ebb77abfff6f70

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a78730cfaae8bdfcd7019428590bae5923e9581ffea701a595e2273a116971c3
MD5 e30f4dfd10cc3c454dba546c352be1e0
BLAKE2b-256 7fa81dc3ca9258f5d617cbb6ff19cf6b9adef6d5786024f7f3bf7e1611baf7c2

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 854959dc8912ad66d5a58585f8cc2cf4f4dadd7e5ea4550d507f80d01904109a
MD5 35ec0579dfb8cba117664e154aecb66a
BLAKE2b-256 18ab8b61c47ff0e36de2c8370e840881a159acba8099e27eb4019f9e714ae3a4

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc460d467e2c536b27502c153d389c881e0d512e6054157f71484d8b76d6d4bc
MD5 2a5780b7f66e88ab48c354307bcb847e
BLAKE2b-256 d385f628573710fca0a2c97c7e5779777d867b6c5c27053672390732d10dbfb5

See more details on using hashes here.

File details

Details for the file kws_decoder-0.1.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for kws_decoder-0.1.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 43c9bbf65e738815877f444da84c4b7dc7647795d8455499603fc839ac70a4b7
MD5 bcb60ea65eaa22c1ac7866735705f310
BLAKE2b-256 533107623ac465964ea6bd4cef9ffe526d5b56d5d79d31cac11d9b46e62679be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page