Spaces:
Sleeping
Sleeping
test single channel
Browse files- Cargo.lock +120 -23
- Cargo.toml +3 -0
- src/asr/aws.rs +1 -11
- src/asr/mod.rs +12 -0
- src/main.rs +124 -1
- whisper/samples/samples_jfk.wav +0 -0
Cargo.lock
CHANGED
|
@@ -121,7 +121,7 @@ dependencies = [
|
|
| 121 |
"aws-smithy-runtime-api",
|
| 122 |
"aws-smithy-types",
|
| 123 |
"aws-types",
|
| 124 |
-
"bytes",
|
| 125 |
"fastrand",
|
| 126 |
"hex",
|
| 127 |
"http",
|
|
@@ -154,7 +154,7 @@ dependencies = [
|
|
| 154 |
"aws-smithy-runtime-api",
|
| 155 |
"aws-smithy-types",
|
| 156 |
"aws-types",
|
| 157 |
-
"bytes",
|
| 158 |
"http",
|
| 159 |
"http-body",
|
| 160 |
"pin-project-lite",
|
|
@@ -200,7 +200,7 @@ dependencies = [
|
|
| 200 |
"aws-smithy-runtime-api",
|
| 201 |
"aws-smithy-types",
|
| 202 |
"aws-types",
|
| 203 |
-
"bytes",
|
| 204 |
"http",
|
| 205 |
"regex",
|
| 206 |
"tracing",
|
|
@@ -222,7 +222,7 @@ dependencies = [
|
|
| 222 |
"aws-smithy-runtime-api",
|
| 223 |
"aws-smithy-types",
|
| 224 |
"aws-types",
|
| 225 |
-
"bytes",
|
| 226 |
"http",
|
| 227 |
"regex",
|
| 228 |
"tracing",
|
|
@@ -244,7 +244,7 @@ dependencies = [
|
|
| 244 |
"aws-smithy-runtime-api",
|
| 245 |
"aws-smithy-types",
|
| 246 |
"aws-types",
|
| 247 |
-
"bytes",
|
| 248 |
"http",
|
| 249 |
"regex",
|
| 250 |
"tracing",
|
|
@@ -291,7 +291,7 @@ dependencies = [
|
|
| 291 |
"aws-smithy-runtime-api",
|
| 292 |
"aws-smithy-types",
|
| 293 |
"aws-types",
|
| 294 |
-
"bytes",
|
| 295 |
"http",
|
| 296 |
"hyper",
|
| 297 |
"regex",
|
|
@@ -314,7 +314,7 @@ dependencies = [
|
|
| 314 |
"aws-smithy-runtime-api",
|
| 315 |
"aws-smithy-types",
|
| 316 |
"aws-types",
|
| 317 |
-
"bytes",
|
| 318 |
"fastrand",
|
| 319 |
"http",
|
| 320 |
"regex",
|
|
@@ -332,7 +332,7 @@ dependencies = [
|
|
| 332 |
"aws-smithy-http",
|
| 333 |
"aws-smithy-runtime-api",
|
| 334 |
"aws-smithy-types",
|
| 335 |
-
"bytes",
|
| 336 |
"form_urlencoded",
|
| 337 |
"hex",
|
| 338 |
"hmac",
|
|
@@ -363,7 +363,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 363 |
checksum = "1c669e1e5fc0d79561bf7a122b118bd50c898758354fe2c53eb8f2d31507cbc3"
|
| 364 |
dependencies = [
|
| 365 |
"aws-smithy-types",
|
| 366 |
-
"bytes",
|
| 367 |
"crc32fast",
|
| 368 |
]
|
| 369 |
|
|
@@ -376,7 +376,7 @@ dependencies = [
|
|
| 376 |
"aws-smithy-eventstream",
|
| 377 |
"aws-smithy-runtime-api",
|
| 378 |
"aws-smithy-types",
|
| 379 |
-
"bytes",
|
| 380 |
"bytes-utils",
|
| 381 |
"futures-core",
|
| 382 |
"http",
|
|
@@ -417,7 +417,7 @@ dependencies = [
|
|
| 417 |
"aws-smithy-http",
|
| 418 |
"aws-smithy-runtime-api",
|
| 419 |
"aws-smithy-types",
|
| 420 |
-
"bytes",
|
| 421 |
"fastrand",
|
| 422 |
"http",
|
| 423 |
"http-body",
|
|
@@ -439,7 +439,7 @@ checksum = "4d27c3235d4972ed976b5c1a82286e7c4457f618f3c2ae6d4ae44f081dd24575"
|
|
| 439 |
dependencies = [
|
| 440 |
"aws-smithy-async",
|
| 441 |
"aws-smithy-types",
|
| 442 |
-
"bytes",
|
| 443 |
"http",
|
| 444 |
"pin-project-lite",
|
| 445 |
"tokio",
|
|
@@ -454,7 +454,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 454 |
checksum = "d2fc32035dc0636a8583cf0c6dd7f1e6d5404103b836d26228b8730907a88d9f"
|
| 455 |
dependencies = [
|
| 456 |
"base64-simd",
|
| 457 |
-
"bytes",
|
| 458 |
"bytes-utils",
|
| 459 |
"futures-core",
|
| 460 |
"http",
|
|
@@ -604,6 +604,12 @@ version = "1.5.0"
|
|
| 604 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 605 |
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
| 606 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 607 |
[[package]]
|
| 608 |
name = "bytes"
|
| 609 |
version = "1.5.0"
|
|
@@ -616,7 +622,7 @@ version = "0.1.4"
|
|
| 616 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 617 |
checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35"
|
| 618 |
dependencies = [
|
| 619 |
-
"bytes",
|
| 620 |
"either",
|
| 621 |
]
|
| 622 |
|
|
@@ -845,6 +851,21 @@ version = "1.3.0"
|
|
| 845 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 846 |
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
| 847 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 848 |
[[package]]
|
| 849 |
name = "futures-channel"
|
| 850 |
version = "0.3.29"
|
|
@@ -852,6 +873,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 852 |
checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
|
| 853 |
dependencies = [
|
| 854 |
"futures-core",
|
|
|
|
| 855 |
]
|
| 856 |
|
| 857 |
[[package]]
|
|
@@ -860,6 +882,23 @@ version = "0.3.29"
|
|
| 860 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 861 |
checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
|
| 862 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 863 |
[[package]]
|
| 864 |
name = "futures-macro"
|
| 865 |
version = "0.3.29"
|
|
@@ -889,15 +928,30 @@ version = "0.3.29"
|
|
| 889 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 890 |
checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
|
| 891 |
dependencies = [
|
|
|
|
| 892 |
"futures-core",
|
|
|
|
| 893 |
"futures-macro",
|
| 894 |
"futures-sink",
|
| 895 |
"futures-task",
|
|
|
|
| 896 |
"pin-project-lite",
|
| 897 |
"pin-utils",
|
| 898 |
"slab",
|
| 899 |
]
|
| 900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 901 |
[[package]]
|
| 902 |
name = "fvad"
|
| 903 |
version = "0.1.3"
|
|
@@ -946,7 +1000,7 @@ version = "0.3.22"
|
|
| 946 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 947 |
checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
|
| 948 |
dependencies = [
|
| 949 |
-
"bytes",
|
| 950 |
"fnv",
|
| 951 |
"futures-core",
|
| 952 |
"futures-sink",
|
|
@@ -981,7 +1035,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 981 |
checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
|
| 982 |
dependencies = [
|
| 983 |
"base64 0.21.5",
|
| 984 |
-
"bytes",
|
| 985 |
"headers-core",
|
| 986 |
"http",
|
| 987 |
"httpdate",
|
|
@@ -1037,13 +1091,19 @@ dependencies = [
|
|
| 1037 |
"windows-sys",
|
| 1038 |
]
|
| 1039 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1040 |
[[package]]
|
| 1041 |
name = "http"
|
| 1042 |
version = "0.2.11"
|
| 1043 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1044 |
checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
|
| 1045 |
dependencies = [
|
| 1046 |
-
"bytes",
|
| 1047 |
"fnv",
|
| 1048 |
"itoa",
|
| 1049 |
]
|
|
@@ -1054,7 +1114,7 @@ version = "0.4.5"
|
|
| 1054 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1055 |
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
|
| 1056 |
dependencies = [
|
| 1057 |
-
"bytes",
|
| 1058 |
"http",
|
| 1059 |
"pin-project-lite",
|
| 1060 |
]
|
|
@@ -1083,7 +1143,7 @@ version = "0.14.27"
|
|
| 1083 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1084 |
checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
|
| 1085 |
dependencies = [
|
| 1086 |
-
"bytes",
|
| 1087 |
"futures-channel",
|
| 1088 |
"futures-core",
|
| 1089 |
"futures-util",
|
|
@@ -1476,6 +1536,26 @@ dependencies = [
|
|
| 1476 |
"sha2",
|
| 1477 |
]
|
| 1478 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1479 |
[[package]]
|
| 1480 |
name = "pin-project-lite"
|
| 1481 |
version = "0.2.13"
|
|
@@ -1496,7 +1576,7 @@ checksum = "504774c97b0744c1ee108a37e5a65a9745a4725c4c06277521dabc28eb53a904"
|
|
| 1496 |
dependencies = [
|
| 1497 |
"async-trait",
|
| 1498 |
"base64 0.21.5",
|
| 1499 |
-
"bytes",
|
| 1500 |
"futures-util",
|
| 1501 |
"headers",
|
| 1502 |
"http",
|
|
@@ -1515,8 +1595,10 @@ dependencies = [
|
|
| 1515 |
"serde_json",
|
| 1516 |
"serde_urlencoded",
|
| 1517 |
"smallvec",
|
|
|
|
| 1518 |
"thiserror",
|
| 1519 |
"tokio",
|
|
|
|
| 1520 |
"tokio-tungstenite",
|
| 1521 |
"tokio-util",
|
| 1522 |
"tracing",
|
|
@@ -1549,6 +1631,7 @@ dependencies = [
|
|
| 1549 |
"base64 0.21.5",
|
| 1550 |
"config",
|
| 1551 |
"futures-util",
|
|
|
|
| 1552 |
"lazy_static",
|
| 1553 |
"once_cell",
|
| 1554 |
"poem",
|
|
@@ -1557,6 +1640,7 @@ dependencies = [
|
|
| 1557 |
"serde_yaml",
|
| 1558 |
"tokio",
|
| 1559 |
"tokio-stream",
|
|
|
|
| 1560 |
"tracing",
|
| 1561 |
"tracing-subscriber",
|
| 1562 |
"tracing-test",
|
|
@@ -2025,6 +2109,18 @@ version = "0.9.8"
|
|
| 2025 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2026 |
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
| 2027 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2028 |
[[package]]
|
| 2029 |
name = "strsim"
|
| 2030 |
version = "0.8.0"
|
|
@@ -2157,7 +2253,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 2157 |
checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9"
|
| 2158 |
dependencies = [
|
| 2159 |
"backtrace",
|
| 2160 |
-
"bytes",
|
| 2161 |
"libc",
|
| 2162 |
"mio",
|
| 2163 |
"num_cpus",
|
|
@@ -2218,8 +2314,9 @@ version = "0.7.10"
|
|
| 2218 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2219 |
checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
|
| 2220 |
dependencies = [
|
| 2221 |
-
"bytes",
|
| 2222 |
"futures-core",
|
|
|
|
| 2223 |
"futures-sink",
|
| 2224 |
"pin-project-lite",
|
| 2225 |
"tokio",
|
|
@@ -2355,7 +2452,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 2355 |
checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
|
| 2356 |
dependencies = [
|
| 2357 |
"byteorder",
|
| 2358 |
-
"bytes",
|
| 2359 |
"data-encoding",
|
| 2360 |
"http",
|
| 2361 |
"httparse",
|
|
|
|
| 121 |
"aws-smithy-runtime-api",
|
| 122 |
"aws-smithy-types",
|
| 123 |
"aws-types",
|
| 124 |
+
"bytes 1.5.0",
|
| 125 |
"fastrand",
|
| 126 |
"hex",
|
| 127 |
"http",
|
|
|
|
| 154 |
"aws-smithy-runtime-api",
|
| 155 |
"aws-smithy-types",
|
| 156 |
"aws-types",
|
| 157 |
+
"bytes 1.5.0",
|
| 158 |
"http",
|
| 159 |
"http-body",
|
| 160 |
"pin-project-lite",
|
|
|
|
| 200 |
"aws-smithy-runtime-api",
|
| 201 |
"aws-smithy-types",
|
| 202 |
"aws-types",
|
| 203 |
+
"bytes 1.5.0",
|
| 204 |
"http",
|
| 205 |
"regex",
|
| 206 |
"tracing",
|
|
|
|
| 222 |
"aws-smithy-runtime-api",
|
| 223 |
"aws-smithy-types",
|
| 224 |
"aws-types",
|
| 225 |
+
"bytes 1.5.0",
|
| 226 |
"http",
|
| 227 |
"regex",
|
| 228 |
"tracing",
|
|
|
|
| 244 |
"aws-smithy-runtime-api",
|
| 245 |
"aws-smithy-types",
|
| 246 |
"aws-types",
|
| 247 |
+
"bytes 1.5.0",
|
| 248 |
"http",
|
| 249 |
"regex",
|
| 250 |
"tracing",
|
|
|
|
| 291 |
"aws-smithy-runtime-api",
|
| 292 |
"aws-smithy-types",
|
| 293 |
"aws-types",
|
| 294 |
+
"bytes 1.5.0",
|
| 295 |
"http",
|
| 296 |
"hyper",
|
| 297 |
"regex",
|
|
|
|
| 314 |
"aws-smithy-runtime-api",
|
| 315 |
"aws-smithy-types",
|
| 316 |
"aws-types",
|
| 317 |
+
"bytes 1.5.0",
|
| 318 |
"fastrand",
|
| 319 |
"http",
|
| 320 |
"regex",
|
|
|
|
| 332 |
"aws-smithy-http",
|
| 333 |
"aws-smithy-runtime-api",
|
| 334 |
"aws-smithy-types",
|
| 335 |
+
"bytes 1.5.0",
|
| 336 |
"form_urlencoded",
|
| 337 |
"hex",
|
| 338 |
"hmac",
|
|
|
|
| 363 |
checksum = "1c669e1e5fc0d79561bf7a122b118bd50c898758354fe2c53eb8f2d31507cbc3"
|
| 364 |
dependencies = [
|
| 365 |
"aws-smithy-types",
|
| 366 |
+
"bytes 1.5.0",
|
| 367 |
"crc32fast",
|
| 368 |
]
|
| 369 |
|
|
|
|
| 376 |
"aws-smithy-eventstream",
|
| 377 |
"aws-smithy-runtime-api",
|
| 378 |
"aws-smithy-types",
|
| 379 |
+
"bytes 1.5.0",
|
| 380 |
"bytes-utils",
|
| 381 |
"futures-core",
|
| 382 |
"http",
|
|
|
|
| 417 |
"aws-smithy-http",
|
| 418 |
"aws-smithy-runtime-api",
|
| 419 |
"aws-smithy-types",
|
| 420 |
+
"bytes 1.5.0",
|
| 421 |
"fastrand",
|
| 422 |
"http",
|
| 423 |
"http-body",
|
|
|
|
| 439 |
dependencies = [
|
| 440 |
"aws-smithy-async",
|
| 441 |
"aws-smithy-types",
|
| 442 |
+
"bytes 1.5.0",
|
| 443 |
"http",
|
| 444 |
"pin-project-lite",
|
| 445 |
"tokio",
|
|
|
|
| 454 |
checksum = "d2fc32035dc0636a8583cf0c6dd7f1e6d5404103b836d26228b8730907a88d9f"
|
| 455 |
dependencies = [
|
| 456 |
"base64-simd",
|
| 457 |
+
"bytes 1.5.0",
|
| 458 |
"bytes-utils",
|
| 459 |
"futures-core",
|
| 460 |
"http",
|
|
|
|
| 604 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 605 |
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
| 606 |
|
| 607 |
+
[[package]]
|
| 608 |
+
name = "bytes"
|
| 609 |
+
version = "0.5.6"
|
| 610 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 611 |
+
checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
|
| 612 |
+
|
| 613 |
[[package]]
|
| 614 |
name = "bytes"
|
| 615 |
version = "1.5.0"
|
|
|
|
| 622 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 623 |
checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35"
|
| 624 |
dependencies = [
|
| 625 |
+
"bytes 1.5.0",
|
| 626 |
"either",
|
| 627 |
]
|
| 628 |
|
|
|
|
| 851 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 852 |
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
| 853 |
|
| 854 |
+
[[package]]
|
| 855 |
+
name = "futures"
|
| 856 |
+
version = "0.3.28"
|
| 857 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 858 |
+
checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
|
| 859 |
+
dependencies = [
|
| 860 |
+
"futures-channel",
|
| 861 |
+
"futures-core",
|
| 862 |
+
"futures-executor",
|
| 863 |
+
"futures-io",
|
| 864 |
+
"futures-sink",
|
| 865 |
+
"futures-task",
|
| 866 |
+
"futures-util",
|
| 867 |
+
]
|
| 868 |
+
|
| 869 |
[[package]]
|
| 870 |
name = "futures-channel"
|
| 871 |
version = "0.3.29"
|
|
|
|
| 873 |
checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
|
| 874 |
dependencies = [
|
| 875 |
"futures-core",
|
| 876 |
+
"futures-sink",
|
| 877 |
]
|
| 878 |
|
| 879 |
[[package]]
|
|
|
|
| 882 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 883 |
checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
|
| 884 |
|
| 885 |
+
[[package]]
|
| 886 |
+
name = "futures-executor"
|
| 887 |
+
version = "0.3.29"
|
| 888 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 889 |
+
checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc"
|
| 890 |
+
dependencies = [
|
| 891 |
+
"futures-core",
|
| 892 |
+
"futures-task",
|
| 893 |
+
"futures-util",
|
| 894 |
+
]
|
| 895 |
+
|
| 896 |
+
[[package]]
|
| 897 |
+
name = "futures-io"
|
| 898 |
+
version = "0.3.29"
|
| 899 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 900 |
+
checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
|
| 901 |
+
|
| 902 |
[[package]]
|
| 903 |
name = "futures-macro"
|
| 904 |
version = "0.3.29"
|
|
|
|
| 928 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 929 |
checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
|
| 930 |
dependencies = [
|
| 931 |
+
"futures-channel",
|
| 932 |
"futures-core",
|
| 933 |
+
"futures-io",
|
| 934 |
"futures-macro",
|
| 935 |
"futures-sink",
|
| 936 |
"futures-task",
|
| 937 |
+
"memchr",
|
| 938 |
"pin-project-lite",
|
| 939 |
"pin-utils",
|
| 940 |
"slab",
|
| 941 |
]
|
| 942 |
|
| 943 |
+
[[package]]
|
| 944 |
+
name = "futures_codec"
|
| 945 |
+
version = "0.4.1"
|
| 946 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 947 |
+
checksum = "ce54d63f8b0c75023ed920d46fd71d0cbbb830b0ee012726b5b4f506fb6dea5b"
|
| 948 |
+
dependencies = [
|
| 949 |
+
"bytes 0.5.6",
|
| 950 |
+
"futures",
|
| 951 |
+
"memchr",
|
| 952 |
+
"pin-project",
|
| 953 |
+
]
|
| 954 |
+
|
| 955 |
[[package]]
|
| 956 |
name = "fvad"
|
| 957 |
version = "0.1.3"
|
|
|
|
| 1000 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1001 |
checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
|
| 1002 |
dependencies = [
|
| 1003 |
+
"bytes 1.5.0",
|
| 1004 |
"fnv",
|
| 1005 |
"futures-core",
|
| 1006 |
"futures-sink",
|
|
|
|
| 1035 |
checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
|
| 1036 |
dependencies = [
|
| 1037 |
"base64 0.21.5",
|
| 1038 |
+
"bytes 1.5.0",
|
| 1039 |
"headers-core",
|
| 1040 |
"http",
|
| 1041 |
"httpdate",
|
|
|
|
| 1091 |
"windows-sys",
|
| 1092 |
]
|
| 1093 |
|
| 1094 |
+
[[package]]
|
| 1095 |
+
name = "hound"
|
| 1096 |
+
version = "3.5.1"
|
| 1097 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1098 |
+
checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f"
|
| 1099 |
+
|
| 1100 |
[[package]]
|
| 1101 |
name = "http"
|
| 1102 |
version = "0.2.11"
|
| 1103 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1104 |
checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
|
| 1105 |
dependencies = [
|
| 1106 |
+
"bytes 1.5.0",
|
| 1107 |
"fnv",
|
| 1108 |
"itoa",
|
| 1109 |
]
|
|
|
|
| 1114 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1115 |
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
|
| 1116 |
dependencies = [
|
| 1117 |
+
"bytes 1.5.0",
|
| 1118 |
"http",
|
| 1119 |
"pin-project-lite",
|
| 1120 |
]
|
|
|
|
| 1143 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1144 |
checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
|
| 1145 |
dependencies = [
|
| 1146 |
+
"bytes 1.5.0",
|
| 1147 |
"futures-channel",
|
| 1148 |
"futures-core",
|
| 1149 |
"futures-util",
|
|
|
|
| 1536 |
"sha2",
|
| 1537 |
]
|
| 1538 |
|
| 1539 |
+
[[package]]
|
| 1540 |
+
name = "pin-project"
|
| 1541 |
+
version = "0.4.30"
|
| 1542 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1543 |
+
checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a"
|
| 1544 |
+
dependencies = [
|
| 1545 |
+
"pin-project-internal",
|
| 1546 |
+
]
|
| 1547 |
+
|
| 1548 |
+
[[package]]
|
| 1549 |
+
name = "pin-project-internal"
|
| 1550 |
+
version = "0.4.30"
|
| 1551 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1552 |
+
checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e"
|
| 1553 |
+
dependencies = [
|
| 1554 |
+
"proc-macro2",
|
| 1555 |
+
"quote",
|
| 1556 |
+
"syn 1.0.109",
|
| 1557 |
+
]
|
| 1558 |
+
|
| 1559 |
[[package]]
|
| 1560 |
name = "pin-project-lite"
|
| 1561 |
version = "0.2.13"
|
|
|
|
| 1576 |
dependencies = [
|
| 1577 |
"async-trait",
|
| 1578 |
"base64 0.21.5",
|
| 1579 |
+
"bytes 1.5.0",
|
| 1580 |
"futures-util",
|
| 1581 |
"headers",
|
| 1582 |
"http",
|
|
|
|
| 1595 |
"serde_json",
|
| 1596 |
"serde_urlencoded",
|
| 1597 |
"smallvec",
|
| 1598 |
+
"sse-codec",
|
| 1599 |
"thiserror",
|
| 1600 |
"tokio",
|
| 1601 |
+
"tokio-stream",
|
| 1602 |
"tokio-tungstenite",
|
| 1603 |
"tokio-util",
|
| 1604 |
"tracing",
|
|
|
|
| 1631 |
"base64 0.21.5",
|
| 1632 |
"config",
|
| 1633 |
"futures-util",
|
| 1634 |
+
"hound",
|
| 1635 |
"lazy_static",
|
| 1636 |
"once_cell",
|
| 1637 |
"poem",
|
|
|
|
| 1640 |
"serde_yaml",
|
| 1641 |
"tokio",
|
| 1642 |
"tokio-stream",
|
| 1643 |
+
"tokio-tungstenite",
|
| 1644 |
"tracing",
|
| 1645 |
"tracing-subscriber",
|
| 1646 |
"tracing-test",
|
|
|
|
| 2109 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2110 |
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
| 2111 |
|
| 2112 |
+
[[package]]
|
| 2113 |
+
name = "sse-codec"
|
| 2114 |
+
version = "0.3.2"
|
| 2115 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2116 |
+
checksum = "84a59f811350c44b4a037aabeb72dc6a9591fc22aa95a036db9a96297c58085a"
|
| 2117 |
+
dependencies = [
|
| 2118 |
+
"bytes 0.5.6",
|
| 2119 |
+
"futures-io",
|
| 2120 |
+
"futures_codec",
|
| 2121 |
+
"memchr",
|
| 2122 |
+
]
|
| 2123 |
+
|
| 2124 |
[[package]]
|
| 2125 |
name = "strsim"
|
| 2126 |
version = "0.8.0"
|
|
|
|
| 2253 |
checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9"
|
| 2254 |
dependencies = [
|
| 2255 |
"backtrace",
|
| 2256 |
+
"bytes 1.5.0",
|
| 2257 |
"libc",
|
| 2258 |
"mio",
|
| 2259 |
"num_cpus",
|
|
|
|
| 2314 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2315 |
checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
|
| 2316 |
dependencies = [
|
| 2317 |
+
"bytes 1.5.0",
|
| 2318 |
"futures-core",
|
| 2319 |
+
"futures-io",
|
| 2320 |
"futures-sink",
|
| 2321 |
"pin-project-lite",
|
| 2322 |
"tokio",
|
|
|
|
| 2452 |
checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
|
| 2453 |
dependencies = [
|
| 2454 |
"byteorder",
|
| 2455 |
+
"bytes 1.5.0",
|
| 2456 |
"data-encoding",
|
| 2457 |
"http",
|
| 2458 |
"httparse",
|
Cargo.toml
CHANGED
|
@@ -39,3 +39,6 @@ whisper = { path="whisper", features = ["cuda"], optional = true }
|
|
| 39 |
|
| 40 |
[dev-dependencies]
|
| 41 |
tracing-test = "*"
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
[dev-dependencies]
|
| 41 |
tracing-test = "*"
|
| 42 |
+
poem = { version = "1.3", features = ["websocket", "static-files", "test"] }
|
| 43 |
+
tokio-tungstenite = "*"
|
| 44 |
+
hound = "*"
|
src/asr/aws.rs
CHANGED
|
@@ -12,7 +12,7 @@ use tokio::select;
|
|
| 12 |
use tokio::sync::broadcast::Receiver;
|
| 13 |
use tokio_stream::Stream;
|
| 14 |
use futures_util::TryStreamExt;
|
| 15 |
-
use crate::asr::{ASR, Event};
|
| 16 |
|
| 17 |
pub struct AwsAsr {
|
| 18 |
speaker_voice_channel: tokio::sync::mpsc::Sender<Vec<i16>>,
|
|
@@ -82,16 +82,6 @@ impl AwsAsr {
|
|
| 82 |
}
|
| 83 |
}
|
| 84 |
|
| 85 |
-
#[allow(dead_code)]
|
| 86 |
-
fn slice_i16_to_u8(slice: &[i16]) -> Vec<u8> {
|
| 87 |
-
slice
|
| 88 |
-
.iter()
|
| 89 |
-
.flat_map(|&sample| {
|
| 90 |
-
[sample as u8, (sample >> 8) as u8]
|
| 91 |
-
})
|
| 92 |
-
.collect()
|
| 93 |
-
}
|
| 94 |
-
|
| 95 |
impl Drop for AwsAsr {
|
| 96 |
fn drop(&mut self) {
|
| 97 |
if let Some(drop_handler) = self.drop_handler.take() {
|
|
|
|
| 12 |
use tokio::sync::broadcast::Receiver;
|
| 13 |
use tokio_stream::Stream;
|
| 14 |
use futures_util::TryStreamExt;
|
| 15 |
+
use crate::asr::{ASR, Event, slice_i16_to_u8};
|
| 16 |
|
| 17 |
pub struct AwsAsr {
|
| 18 |
speaker_voice_channel: tokio::sync::mpsc::Sender<Vec<i16>>,
|
|
|
|
| 82 |
}
|
| 83 |
}
|
| 84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
impl Drop for AwsAsr {
|
| 86 |
fn drop(&mut self) {
|
| 87 |
if let Some(drop_handler) = self.drop_handler.take() {
|
src/asr/mod.rs
CHANGED
|
@@ -16,3 +16,15 @@ pub(crate) trait ASR {
|
|
| 16 |
async fn frame(&mut self, frame: Vec<i16>) -> anyhow::Result<()>;
|
| 17 |
fn subscribe(&mut self) -> Receiver<Event>;
|
| 18 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
async fn frame(&mut self, frame: Vec<i16>) -> anyhow::Result<()>;
|
| 17 |
fn subscribe(&mut self) -> Receiver<Event>;
|
| 18 |
}
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
#[allow(dead_code)]
|
| 22 |
+
pub(crate) fn slice_i16_to_u8(slice: &[i16]) -> Vec<u8> {
|
| 23 |
+
slice
|
| 24 |
+
.iter()
|
| 25 |
+
.flat_map(|&sample| {
|
| 26 |
+
[sample as u8, (sample >> 8) as u8]
|
| 27 |
+
})
|
| 28 |
+
.collect()
|
| 29 |
+
}
|
| 30 |
+
|
src/main.rs
CHANGED
|
@@ -276,7 +276,7 @@ async fn stream_listener(
|
|
| 276 |
})
|
| 277 |
}
|
| 278 |
|
| 279 |
-
#[derive(Serialize, Debug)]
|
| 280 |
enum SingleEvent {
|
| 281 |
#[serde(rename = "original")]
|
| 282 |
Transcription {
|
|
@@ -403,4 +403,127 @@ fn u8_to_i16(input: &[u8]) -> Vec<i16> {
|
|
| 403 |
i16::from_le_bytes(buf)
|
| 404 |
})
|
| 405 |
.collect::<Vec<i16>>()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 406 |
}
|
|
|
|
| 276 |
})
|
| 277 |
}
|
| 278 |
|
| 279 |
+
#[derive(Serialize, Deserialize, Debug)]
|
| 280 |
enum SingleEvent {
|
| 281 |
#[serde(rename = "original")]
|
| 282 |
Transcription {
|
|
|
|
| 403 |
i16::from_le_bytes(buf)
|
| 404 |
})
|
| 405 |
.collect::<Vec<i16>>()
|
| 406 |
+
}
|
| 407 |
+
|
| 408 |
+
#[cfg(test)]
|
| 409 |
+
mod test {
|
| 410 |
+
use std::cell::{Cell};
|
| 411 |
+
use std::time::Duration;
|
| 412 |
+
use async_stream::stream;
|
| 413 |
+
use poem::listener::{Acceptor, Listener};
|
| 414 |
+
use tokio::pin;
|
| 415 |
+
use tokio::time::sleep;
|
| 416 |
+
use tokio_stream::StreamExt;
|
| 417 |
+
use tokio_tungstenite::{
|
| 418 |
+
connect_async,
|
| 419 |
+
tungstenite::Message,
|
| 420 |
+
};
|
| 421 |
+
use tracing::{info, error};
|
| 422 |
+
use crate::asr::slice_i16_to_u8;
|
| 423 |
+
use super::*;
|
| 424 |
+
|
| 425 |
+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
| 426 |
+
#[tracing_test::traced_test]
|
| 427 |
+
async fn test_single() {
|
| 428 |
+
let shared_config = aws_config::load_defaults(BehaviorVersion::latest()).await;
|
| 429 |
+
let ctx = Context {
|
| 430 |
+
lessons_manager: LessonsManager::new(&shared_config),
|
| 431 |
+
};
|
| 432 |
+
|
| 433 |
+
let query = SingleQuery {
|
| 434 |
+
id: 1,
|
| 435 |
+
from: "zh-CN".to_string(),
|
| 436 |
+
to: "en-US".to_string(),
|
| 437 |
+
voice: None,
|
| 438 |
+
};
|
| 439 |
+
|
| 440 |
+
let acceptor = TcpListener::bind("[::]:0")
|
| 441 |
+
.into_acceptor()
|
| 442 |
+
.await
|
| 443 |
+
.unwrap();
|
| 444 |
+
let addr = acceptor
|
| 445 |
+
.local_addr()
|
| 446 |
+
.remove(0)
|
| 447 |
+
.as_socket_addr()
|
| 448 |
+
.cloned()
|
| 449 |
+
.unwrap();
|
| 450 |
+
let server = Server::new_with_acceptor(acceptor);
|
| 451 |
+
let handle = tokio::spawn(async move {
|
| 452 |
+
let _ = server.run(
|
| 453 |
+
Route::new()
|
| 454 |
+
.at("/ws/voice", get(stream_single))
|
| 455 |
+
.data(ctx)
|
| 456 |
+
).await;
|
| 457 |
+
});
|
| 458 |
+
|
| 459 |
+
let url = format!(
|
| 460 |
+
"ws://{}/ws/voice?id={}&from={}&to={}&voice={}",
|
| 461 |
+
addr, query.id, query.from, query.to, query.voice.unwrap_or("Amy".to_string())
|
| 462 |
+
);
|
| 463 |
+
let (mut client_stream, _) = connect_async(url)
|
| 464 |
+
.await
|
| 465 |
+
.unwrap();
|
| 466 |
+
|
| 467 |
+
client_stream
|
| 468 |
+
.send(Message::Binary(Vec::new()))
|
| 469 |
+
.await
|
| 470 |
+
.unwrap();
|
| 471 |
+
|
| 472 |
+
|
| 473 |
+
let wav = hound::WavReader::open("whisper/samples/samples_jfk.wav")
|
| 474 |
+
.expect("failed to open wav");
|
| 475 |
+
let spec = wav.spec();
|
| 476 |
+
info!("{:?}", spec);
|
| 477 |
+
let samples = wav
|
| 478 |
+
.into_samples::<i16>()
|
| 479 |
+
.map(|s| s.unwrap())
|
| 480 |
+
.collect::<Vec<i16>>();
|
| 481 |
+
let chunks = samples.chunks(1600)
|
| 482 |
+
.map(|chunk| chunk.to_vec())
|
| 483 |
+
.into_iter();
|
| 484 |
+
|
| 485 |
+
let audio_stream = stream! {
|
| 486 |
+
for chunk in chunks {
|
| 487 |
+
yield slice_i16_to_u8(&chunk);
|
| 488 |
+
sleep(Duration::from_millis(10)).await;
|
| 489 |
+
}
|
| 490 |
+
};
|
| 491 |
+
pin!(audio_stream);
|
| 492 |
+
|
| 493 |
+
let voice_flag = Cell::new(false);
|
| 494 |
+
let recv_fut = async {
|
| 495 |
+
while let Some(voice_slice) = audio_stream.next().await {
|
| 496 |
+
client_stream.send(Message::Binary(voice_slice)).await?;
|
| 497 |
+
}
|
| 498 |
+
info!("sent all voice chunks");
|
| 499 |
+
|
| 500 |
+
while let Some(next_msg) = client_stream.next().await {
|
| 501 |
+
debug!(?next_msg);
|
| 502 |
+
let msg = next_msg?;
|
| 503 |
+
let Message::Text(json_str) = msg else { continue };
|
| 504 |
+
let Ok(evt) = serde_json::from_str::<SingleEvent>(&json_str) else { continue };
|
| 505 |
+
if let SingleEvent::Voice { .. } = evt {
|
| 506 |
+
voice_flag.replace(true);
|
| 507 |
+
break
|
| 508 |
+
}
|
| 509 |
+
}
|
| 510 |
+
|
| 511 |
+
Ok(()) as anyhow::Result<()>
|
| 512 |
+
};
|
| 513 |
+
|
| 514 |
+
select! {
|
| 515 |
+
res = recv_fut => {
|
| 516 |
+
if let Err(e) = res {
|
| 517 |
+
error!("Error: {:?}", e);
|
| 518 |
+
}
|
| 519 |
+
}
|
| 520 |
+
_ = sleep(Duration::from_secs(10)) => {
|
| 521 |
+
error!("timeout")
|
| 522 |
+
}
|
| 523 |
+
}
|
| 524 |
+
|
| 525 |
+
handle.abort();
|
| 526 |
+
|
| 527 |
+
assert!(voice_flag.get(), "voice not received");
|
| 528 |
+
}
|
| 529 |
}
|
whisper/samples/samples_jfk.wav
ADDED
|
Binary file (352 kB). View file
|
|
|