Yehor commited on
Commit
d4bbf90
β€’
1 Parent(s): dbaa108

Replace the code

Browse files
.gitattributes CHANGED
@@ -1,5 +1,6 @@
1
- tsn.wav filter=lfs diff=lfs merge=lfs -text
2
- long_1.wav filter=lfs diff=lfs merge=lfs -text
3
- mer_lviv_interview.wav filter=lfs diff=lfs merge=lfs -text
4
- short_1.wav filter=lfs diff=lfs merge=lfs -text
5
- tsn_2.wav filter=lfs diff=lfs merge=lfs -text
 
 
1
+ sample_1.wav filter=lfs diff=lfs merge=lfs -text
2
+ sample_2.wav filter=lfs diff=lfs merge=lfs -text
3
+ sample_3.wav filter=lfs diff=lfs merge=lfs -text
4
+ sample_4.wav filter=lfs diff=lfs merge=lfs -text
5
+ sample_5.wav filter=lfs diff=lfs merge=lfs -text
6
+ sample_6.wav filter=lfs diff=lfs merge=lfs -text
.gitignore CHANGED
@@ -1,2 +1,3 @@
1
  .idea/
2
- .venv
 
 
1
  .idea/
2
+ .venv/
3
+ flagged/
README.md CHANGED
@@ -1,184 +1,14 @@
1
- ---
2
- title: Wav2vec2 Ukrainian with Timestamps
3
- emoji: πŸ‡ΊπŸ‡¦
4
- colorFrom: blue
5
- colorTo: yellow
6
- sdk: gradio
7
- app_file: app.py
8
- pinned: false
9
- ---
10
 
 
11
 
12
- # Demo of Ukrainian wav2vec2 model
 
13
 
14
- - The base model is hosted here: https://huggingface.co/Yehor/wav2vec2-xls-r-1b-uk-with-lm
15
- - The model with better News LM: https://huggingface.co/Yehor/wav2vec2-xls-r-1b-uk-with-news-lm
16
 
17
- Follow our community in Telegram: https://t.me/speech_recognition_uk
18
 
19
- ---
20
-
21
- Create a virtualenv:
22
-
23
- ```bash
24
- pipenv install
25
- pipenv shell
26
- ```
27
-
28
- Install deps:
29
-
30
- ```bash
31
- pip install https://github.com/huggingface/transformers/archive/refs/tags/v4.16.2.zip
32
- pip install https://github.com/kpu/kenlm/archive/master.zip
33
-
34
- pip install torch==1.9.1 torchaudio==0.9.1 pyctcdecode==0.3.0
35
- ```
36
-
37
- Run inference:
38
-
39
- ```bash
40
- python inference.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-lm --path_files short_1.wav
41
-
42
- # with chunking
43
- python inference.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-lm --path_files short_1.wav --chunk_length_s 10 --stride_length_s_l 4 --stride_length_s_r 2
44
- python inference.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-lm --path_files long_1.wav --chunk_length_s 10 --stride_length_s_l 4 --stride_length_s_r 2
45
-
46
- # with chunking on GPU
47
- python inference_gpu.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-lm --path_files short_1.wav --chunk_length_s 10 --stride_length_s_l 4 --stride_length_s_r 2
48
- python inference_gpu.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-lm --path_files long_1.wav --chunk_length_s 10 --stride_length_s_l 4 --stride_length_s_r 2
49
-
50
- python inference.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-news-lm --path_files mer_lviv_interview.wav --chunk_length_s 10 --stride_length_s_l 4 --stride_length_s_r 2
51
- python inference_gpu.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-news-lm --path_files mer_lviv_interview.wav --chunk_length_s 10 --stride_length_s_l 4 --stride_length_s_r 2
52
-
53
- python inference.py --model_id Yehor/wav2vec2-xls-r-1b-uk-with-lm --path_files tsn.wav,tsn_2.wav --chunk_length_s 10 --stride_length_s_l 4 --stride_length_s_r 2
54
- ```
55
-
56
- NOTE: Do the inference process for long files with chunking.
57
-
58
- ---
59
-
60
- short_1.wav:
61
-
62
- ```
63
- ΠΏΠ°Π½Π° сполучСні ΡˆΡ‚Π°Ρ‚ΠΈ Π½Π°Π΄ Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ стратСгічний ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ ΠΎΠ΄Π½Π°ΠΊ Ρ” Ρ€Ρ–Π·Π½ΠΈΡ†ΡΡˆΡ‚Π°Ρ‚ΠΈ ΠΌΠ°ΡŽΡ‚ΡŒ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈΠΉ Π·Π°ΠΊΠΎΠ½ який ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π°Ρ” якщо ΠΊΠΈΡ‚Π°ΠΉ Π½Π°ΠΏΠ°Π΄ΠΈ Π½Π° Ρ‚Π°ΠΉΠ²Π°Π½ΡŒ Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½ΡΡŒΠΊΠΈΠΉ Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²Ρ– ΠΌΠ°ΡŽΡ‚ΡŒ ΠΉΠΎΠ³ΠΎ Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Ρƒ Π³Ρ€ΠΈ
64
- ```
65
-
66
- short_1.wav (with better News LM):
67
-
68
- ```
69
- аня сполучСні ΡˆΡ‚Π°Ρ‚ΠΈ Π½Π°Π΄ Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ стратСгічний ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ ΠΎΠ΄Π½Π°ΠΊ Ρ” різниця ΡˆΡ‚Π°Ρ‚ΠΈ ΠΌΠ°ΡŽΡ‚ΡŒ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈΠΉ Π·Π°ΠΊΠΎΠ½ який ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π°Ρ” якщо ΠΊΠΈΡ‚Π°ΠΉ Π½Π°ΠΏΠ°Π΄Π΅ Π½Π° Ρ‚Π°ΠΉΠ²Π°Π½ΡŒ Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½ΡΡŒΠΊΠΈΠΉ Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²Ρ– ΠΌΠ°ΡŽΡ‚ΡŒ ΠΉΠΎΠ³ΠΎ Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ ΡƒΠ³Π΅Ρ€ΠΈ
70
- ```
71
-
72
- long_1.wav:
73
-
74
- ```
75
- сСрцС Ρ‡ΠΈ Π΄ΠΈΠ²ΠΎΠ²ΠΈΠΆΠ½ΠΈ порятунок ΠΌΡ–Π»ΡŒΠΉΠΎΠ½ΠΈ людСй Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π² прямому Π΅Ρ„Ρ–Ρ€Ρ– Π²ΠΆΠ΅ Ρ‚Ρ€ΠΈ Π΄ΠΎΠ±ΠΈ ΡΠΏΠΎΡΡ‚Π΅Ρ€Ρ–Π³Π°ΡŽΡ‚ΡŒ Π·Π° ΡΠΏΡ€ΠΎΠ±Π°ΠΌΠΈΠ°ΠΌΠ΅Ρ€ΠΎΠΊΠ°Π½ΡΡŒΠΊΠΈΡ… Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΠΈΠ² дісттисколодя Π·Π° пятирічнС хлопя досі Π½Π΅ Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΎ Ρ‡ΠΈ вдастядістати ΠΉΠΎΠ³ΠΎ Π· тридцяти ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°Π» ΠΆΠΈΠ²ΠΈΠΌ ΠΏΡ€ΠΎ Π½Π°Π΄Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎ складну ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΡŽ Ρ‰ΠΎ Ρ‚Ρ€ΠΈΠ²Π°Ρ” Π² Ρ†ΡŽ ΠΌΠΈΡ‚ΡŒ я Π½Π° Ссарчуккулояз який провалився пятирічнийраян лСдь ΠΏΠΎΠΌΡ–Ρ‚Π½Π° Π΄Ρ–Ρ€Π° Π² Π·Π΅ΠΌΠ»Ρ– мСншС тридцяти сантимСтріву Π΄Ρ–Π°ΠΌΠ΅Ρ‚Ρ€Ρ– Π°Π»Π΅ Π² Π³Π»ΠΈΠ± Π²ΠΎΠ½Π° Ρ‚ΡΠ³Π½Π΅Ρ‚ΡŒΡΡ Π½Π° Ρ‚Ρ€ΠΈΠ΄Ρ†ΡΡ‚ΡŒ Π΄Π²Π° ΠΌΠ΅Ρ‚Ρ€ΠΎ Π±Π°Ρ‚ΡŒΠΊΠΈ ΡˆΡƒΠΊΠ°Π»ΠΈ сина ΠΊΡ–Π»ΡŒΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΌ як Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»Π΅ Π²Ρ–Π½ ΠΏΡ–Π΄ зСмлСю ΠΊΠΎΠ»ΠΈ Π²Ρ–Π½ Π·Π½ΠΈΠΊ я молилися богупросила Π°Π±ΠΈ Π°Π»Π°Π³Π·Π±ΠΈΡ€Ρ–Π³ мосина Ρ– ΠΉΠΎΠ³ΠΎ дістали Π· колодязь ΠΆΠΈΠ²ΠΈΠΌ господихай ΠΉΠΎΠΌΡƒ Ρ‚Π° мСншС Π±ΠΎΠ»ΠΈΡ‚ΡŒ Π² Ρ‚Ρ–ΠΉ Π΄Ρ–Π»Ρ– я Ρ‚Π°ΠΊ ΡΠΏΠΎΠ΄Ρ–Π²Π°ΡŽΡ‡ΠΈΡŒ Ρ‰ΠΎ Ρƒ Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΠΈ всС Π²ΠΈΠΉΠ΄Π΅ ΠΉΠΎΠ³ΠΎ Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ витягти просто Ρ‚Π°ΠΊ Ρ€ΠΎΠ·ΡƒΠΌΡ–ΡŽΡ‚ΡŒ Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΠΈ Π·Π°Π½Π°Π΄Ρ‚ΠΎ Π²ΡƒΡΡŒΠΊΠΎΠ° Ρ€ΠΎΠ·ΡˆΠΈΡ€ΡΡ‚ΠΈ Π΄Ρ–Ρ€Ρƒ Π½Π΅ ΠΌΠΎΠΆΠ½Π° Π²ΠΎΠ½Π° просто Π·Π°Π²Π°Π»ΠΈΡ‚ΡŒΡ Ρ‚ΠΎΠΌΡƒ Π²ΠΎΠ½ΠΈ Ρ‚Ρ€ΠΈ Π΄ΠΎ бою Ρ€ΠΎΠ·ΠΊΠΎΠΏΡƒΡŽΡ‚ΡŒ Π°ΠΌΡƒΠ½Π΄Π°Π»Ρ–ΠΊ Ρ– ΠΏΠΎΠΊΠΈ ΠΏΡ€Π°Ρ†ΡŽΡ” Ρ‚Π΅Ρ…Π½Ρ–ΠΊΠΈ
76
- ```
77
-
78
- long_1.wav (with News LM):
79
-
80
- ```
81
- сСрцС Ρ‡ΠΈ Π΄ΠΈΠ²ΠΎΠ²ΠΈΠΆΠ½ΠΈΡ… порятунок ΠΌΡ–Π»ΡŒΠΉΠΎΠ½ΠΈ людСй Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π² прямому Π΅Ρ„Ρ–Ρ€Ρ– Π²ΠΆΠ΅ Ρ‚Ρ€ΠΈ Π΄ΠΎΠ±ΠΈ ΡΠΏΠΎΡΡ‚Π΅Ρ€Ρ–Π³Π°ΡŽΡ‚ΡŒ Π·Π° спробами ΠΌΠ΅Ρ€ΠΎΠΊΠ°Π½ΡΡŒΠΊΠΈΡ… Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΡ–Π² дісттисколодя Π·Π° пятир��чнС хлопя досі Π½Π΅Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΎ Ρ‡ΠΈ вдастся дістати ΠΉΠΎΠ³ΠΎ Π· тридцятимСтрового провалля ΠΆΠΈΠ²ΠΈΠΌ ΠΏΡ€ΠΎ Π½Π°Π΄Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎ складну ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΡŽ Ρ‰ΠΎ Ρ‚Ρ€ΠΈΠ²Π°Ρ” Π² Ρ†ΡŽ ΠΌΠΈΡ‚ΡŒ я Π½Π΅ слісарчукодязв який провалився пятирічний раян лСдь ΠΏΠΎΠΌΡ–Ρ‚Π½Π° Π΄Ρ–Ρ€Π° Π² Π·Π΅ΠΌΠ»Ρ– мСншС тридцяти сантимСтрів Ρƒ Π΄Ρ–Π°ΠΌΠ΅Ρ‚Ρ€Ρ– Π°Π»Π΅ Π² Π³Π»ΠΈΠ± Π²ΠΎΠ½Π° Ρ‚ΡΠ³Π½Π΅Ρ‚ΡŒΡΡ Π½Π° Ρ‚Ρ€ΠΈΠ΄Ρ†ΡΡ‚ΡŒ Π΄Π²Π° ΠΌΠ΅Ρ‚Ρ€ΠΈ Π±Π°Ρ‚ΡŒΠΊΠΈ ΡˆΡƒΠΊΠ°Π»ΠΈ сина ΠΊΡ–Π»ΡŒΠΊΠ° Π³ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΌ як Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΈ Π²Ρ–Π½ ΠΏΡ–Π΄ зСмлСю Π° ΠΊΠΎΠ»ΠΈ Π²Ρ–Π½ Π·Π½ΠΈΠΊ я молилася Π±ΠΎΠ³Ρƒ просила Π°Π±ΠΈ Π°Π»Π°Π³Π±ΠΈΡ€Ρ–Π³ΠΌΠΎ сина Ρ– ΠΉΠΎΠ³ΠΎ дістали сколотізяТивим господи Ρ…Π°ΠΉ ΠΉΠΎΠΌΡƒ Ρ‚Π°ΠΌ мСншС Π±ΠΎΠ»ΠΈΡ‚ΡŒ Π² Ρ‚Ρ–ΠΉ Π΄Ρ–Ρ€Ρ– Ρ– Ρ‚Π°ΠΊ ΡΠΏΠΎΠ΄Ρ–Π²Π°ΡŽΡ‡ΠΈΡΡŒ Ρ‰ΠΎ Ρƒ Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΠΈ всС Π²ΠΈΠΉΠ΄Π΅ ΠΉΠΎΠ³ΠΎ Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ витягти просто Ρ‚Π°ΠΊ Ρ€ΠΎΠ·ΡƒΠΌΡ–ΡŽΡ‚ΡŒ Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΡ–Π² Π·Π°Π½Π°Π΄Ρ‚ΠΎ Π²ΡƒΠ·ΡŒΠΊΠΎ Π° Ρ€ΠΎΠ·ΡˆΠΈΡ€ΡΡ‚ΠΈ Π΄Ρ–Ρ€Ρƒ Π½Π΅ ΠΌΠΎΠΆΠ½Π° Π²ΠΎΠ½Π° просто Π·Π°Π²Π°Π»ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠΌΡƒ Π²ΠΎΠ½ΠΈ Ρ‚Ρ€ΠΈ добою Ρ€ΠΎΠ·ΠΊΠΎΠΏΡƒΡŽΡ‚ΡŒ Π°ΠΌΠ½Ρƒ Π΄Π°Π»Ρ–ΠΊΡ– ΠΏΠΎΠΊΠΈ ΠΏΡ€Π°Ρ†ΡŽΡ” Ρ‚Π΅Ρ…Π½Ρ–ΠΊ
82
- ```
83
-
84
- long_1.wav (with better News LM):
85
-
86
- ```
87
- сСрцС Ρ‡ΠΈ Π΄ΠΈΠ²ΠΎΠ²ΠΈΠΆΠ½ΠΈΠΉ порятунок ΠΌΡ–Π»ΡŒΠΉΠΎΠ½ΠΈ людСй Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π² прямому Π΅Ρ„Ρ–Ρ€Ρ– Π²ΠΆΠ΅ Ρ‚Ρ€ΠΈ Π΄ΠΎΠ±ΠΈ ΡΠΏΠΎΡΡ‚Π΅Ρ€Ρ–Π³Π°ΡŽΡ‚ΡŒ Π·Π° спробами ΠΌΠ°Ρ€ΠΎΠΊΠ°Π½ΡΡŒΠΊΠΈΡ… Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΡ–Π² дісттисколодя Π·Π° пятирічнС хлопя досі Π½Π΅Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΎ Ρ‡ΠΈ вдастся дістати ΠΉΠΎΠ³ΠΎ Π· тридцятимСтрового провалля ΠΆΠΈΠ²ΠΈΠΌ ΠΏΡ€ΠΎ Π½Π°Π΄Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎ складну ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΡŽ Ρ‰ΠΎ Ρ‚Ρ€ΠΈΠ²Π°Ρ” Π² Ρ†ΡŽ ΠΌΠΈΡ‚ΡŒ я Π½Π΅ слСсарчукодязв який провалився пятирічний раян лСдь ΠΏΠΎΠΌΡ–Ρ‚Π½Π° Π΄Ρ–Ρ€Π° Π² Π·Π΅ΠΌΠ»Ρ– мСншС тридцяти сантимСтрів Ρƒ Π΄Ρ–Π°ΠΌΠ΅Ρ‚Ρ€Ρ– Π°Π»Π΅ Π² Π³Π»ΠΈΠ± Π²ΠΎΠ½Π° Ρ‚ΡΠ³Π½Π΅Ρ‚ΡŒΡΡ Π½Π° Ρ‚Ρ€ΠΈΠ΄Ρ†ΡΡ‚ΡŒ Π΄Π²Π° ΠΌΠ΅Ρ‚Ρ€ΠΈ Π±Π°Ρ‚ΡŒΠΊΠΈ ΡˆΡƒΠΊΠ°Π»ΠΈ сина ΠΊΡ–Π»ΡŒΠΊΠ° Π³ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΌ як Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΈ Π²Ρ–Π½ ΠΏΡ–Π΄ зСмлСю Π° ΠΊΠΎΠ»ΠΈ Π²Ρ–Π½ Π·Π½ΠΈΠΊ я молилася Π±ΠΎΠ³Ρƒ просила Π°Π±ΠΈ алаксбирігмо сина Ρ– ΠΉΠΎΠ³ΠΎ дістали сководізяТивим господи Ρ…Π°ΠΉ ΠΉΠΎΠΌΡƒ Ρ‚Π°ΠΌ мСншС Π±ΠΎΠ»ΠΈΡ‚ΡŒ Π² Ρ‚Ρ–ΠΉ тіріятак ΡΠΏΠΎΠ΄Ρ–Π²Π°ΡŽΡ‡ΠΈΡΡŒ Ρ‰ΠΎ Ρƒ Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΠΈ всС Π²ΠΈΠΉΠ΄Π΅ ΠΉΠΎΠ³ΠΎ Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ витягти просто Ρ‚Π°ΠΊ Ρ€ΠΎΠ·ΡƒΠΌΡ–ΡŽΡ‚ΡŒ Ρ€ΡΡ‚ΡƒΠ²Π°Π»ΡŒΠ½ΠΈΠΊΡ–Π² Π·Π°Π½Π°Π΄Ρ‚ΠΎ Π²ΡƒΠ·ΡŒΠΊΠΎ Π° Ρ€ΠΎΠ·ΡˆΠΈΡ€ΡΡ‚ΠΈ Π΄Ρ–Ρ€Ρƒ Π½Π΅ ΠΌΠΎΠΆΠ½Π° Π²ΠΎΠ½Π° просто Π·Π°Π²Π°Π»ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠΌΡƒ Π²ΠΎΠ½ΠΈ Ρ‚Ρ€ΠΈ добою Ρ€ΠΎΠ·ΠΊΠΎΠΏΡƒΡŽΡ‚ΡŒ Π°ΠΌΠ½ΠΎΠΊΠ΄Π°Π»Ρ–ΠΊ Ρ– ΠΏΠΎΠΊΠΈ ΠΏΡ€Π°Ρ†ΡŽΡ” Ρ‚Π΅Ρ…Π½Ρ–ΠΊ
88
- ```
89
-
90
- tsn.wav (with better News LM):
91
-
92
- ```
93
- Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΠΉΠ½ΠΈΠΉ Π²Π΅Ρ‡Ρ–Ρ€ Π½Π° ΠΎΠ΄ΠΈΠ½ плюс ΠΎΠ΄ΠΈΠ½ Π² студії Ρ‚Π° сСм лідія Ρ‚Π°Ρ€Π°Π½ Π° ΠΏΠ»Π°Ρ‚ΠΎΠ½ΠΎΠ²Π° ΠΊΠΎΡ€ΠΎΠ»Π΅Π²Π° Π· Ρ‡ΠΎΠ³ΠΎ починалося Ρ– Ρ‡ΠΈΠΌ Ρ‰Π΅ зовсім Π½Π΅ Π·Π°ΠΊΡ–Π½Ρ‡ΠΈΡ‚ΡŒΡΡ правління Ρ”Π»ΠΈΠ·Π°Π²Π΅Ρ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΡ— сімдСсят Ρ€ΠΎΠΊΡ–Π² Π½Π° Ρ‚Ρ€ΠΎΠ½Ρ– ΠΎΠΊΠΌΠΎΠ²Ρ–Π²Ρ–ΠΏΠΎΠ»ΠΎΠ²Π½Ρ– Ρ€Ρ–ΡˆΠ΅Π½Π½Ρ Ρ‰ΠΎΠ΄ΠΎ спадкоємців ΠΊΠΎΡ€ΠΎΠ½ΠΈ Π±Ρ–Π»ΡŒΡˆΠ΅ Π·Π°Ρ€Π°Π· усС
94
- ```
95
-
96
- tsn_2.wav (with better News LM):
97
-
98
- ```
99
- Π΄ΠΎ осло Π·Ρ–Π»ΠΈ ΠΏΡ–Π΄ час стрілянини Π½Π° ΠΏΡ–Π²Π΄Π΅Π½ΠΌΠ°ΡˆΡ– Π² ΠΆΠ°Π½Ρƒ Π²Π»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ ΠΊΡƒΠ»Ρ– ΠΎΠ΄Π½Π° Π· Π½ΠΈΡ… Ρ€ΠΎΠ·Ρ–Ρ€Π²Π°Π»Π° ΠΊΠΈΡˆΠΊΡ–Π²Π½ΠΈΠΊ Ρ‚Π° Ρ…Ρ€Π΅Π±Π΅Ρ‚ ΠΆΠΈΠ²ΠΎΡ‚Ρ– катастрофу Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Π»Ρ–Ρ‚Ρ€ΠΈ ΠΊΡ€ΠΎΠ²Ρ– яку Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΈ Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ Π²ΠΎΠ½Π° Π·Π°Π±Ρ€ΡƒΠ΄Π½Π΅Π½Π° ΠΊΠΈΡˆΠΊΡ–Π²Π½ΠΈΠΊ ΠΊΠΈΠ½ΡƒΠ²ΡˆΠΈ Π΄ΠΎΠ· Ρ€ΠΎΠ·Ρ–Ρ€Π²Π°Π½ΠΈΠΉ ΠΎΡΠ²Ρ–Ρ‚ΡƒΠ½Π°Π²Ρ–Ρ‚ΡŒ Π½Π΅ ΠΊΠΎΡ‚ΠΈΡ‡Π΅ΠΊΠ°ΠΏΠΎ уТилася Π΄ΡƒΠΆΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈ дістала ΠΊΡƒΠ»Ρ– просто Π½Π° Π²Π°Ρ€Ρ‚Ρ– контрактниця Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Π»Π° Π·Π° оповіщСння частини ΠΏΡ€ΠΎ Π½Π°Π΄Π·Π²ΠΈΡ‡Π°ΠΉΠ½Ρ– ситуації Π²Ρ–Π½ Π±ΡƒΠ² Π² Π΄Π²ΠΎΡ… ΠΊΡ€ΠΎΠΊΠ°Ρ… Π²Ρ–Π΄ вСльми ΠΌΠΎΠ²Ρ‡ΠΊΠΈ розстріляли Ρ‰ΠΎ Π½Π° посту Π±ΡƒΠ»Π° радіостанція Ρ– я Π·Π°ΠΏΡ€Π°Π· Ρ‚Π° ΠΌΠΎΠ³Π»Π° доповісти частину Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²Ρ– Π½Ρƒ я Π½Π΅ Π·ΠΌΠΎΠ³Π»Π° доповісти Π·Ρ€ΠΎΠ±ΠΈΠ² постріли я Π²ΠΆΠ΅ Π½Π΅ Π·ΠΌΠΎΠ³Π»Π° підвСстися стрілянина Π½Π° ΠΏΡ–Π²Π΄Π΅Π½ΠΌΠ°ΡˆΡ– сталася Π²Π½ΠΎΡ‡Ρ– Π΄Π²Π°Π΄Ρ†ΡΡ‚ΡŒ сьомого січня пятСро людСй Π·Π°Π³ΠΈΠ½ΡƒΠ»ΠΈ сСрСд Π½ΠΈΡ… ΠΎΠ΄Π½Π° Ρ†ΠΈΠ²Ρ–Π»ΡŒΠ½Π° Ρ‰Π΅ пятро ΠΏΠΎΡ€Π°Π½Π΅Π½Ρ– ΠΏΡ–Π΄ΠΎΠ·Ρ€ΡŽΠ²Π°Π½ΠΈΠΉ двадцятирічний Ρ€ΠΎΠΊΠΎΠ²ΠΈΡ… артСмірявчух Ρƒ сізо спочатку ΠΏΡ€ΠΎΠ²ΠΈΠ½Ρƒ Π²ΠΈΠ·Π½Π°Π²Π°Π² Ρ‚Π΅ΠΏΠ΅Ρ€ Ρ– Π·Π½ΠΎΠ²Ρƒ ΠΌ Π°Π΄Π²ΠΎΠΊΠ°Ρ‚Π°ΠΌΠΈ Π²Ρ–Π΄ ΠΏΠΎΠΊΠ°Π·Ρ–Π² відмовився Π°Π½Ρ– ΠΊΠΎΠ½Ρ„Π»Ρ–ΠΊΡ‚Π½ΠΈΡ… ситуації Π°Π½Ρ– Π±ΠΎ Ρ‡ΠΎΠ³ΠΎ ΠΏΡ–Π΄ΠΎΠ·Ρ€Ρ–Π»ΠΎΠ³ΠΎ ΠΆΠ°Π½Π½Π° ΠΊΠ°ΠΆΠ΅ Π΄ΠΎ стрілянини Ρ–Π· ΠΏΡ–Π΄ΠΎΠ·Ρ€ΡŽΠ²Π°Π½ΠΈΠΌ Π½Π°Π²Ρ–Ρ‚ΡŒ Π½Π΅ розмовляла Π° Ρ‚Ρ–Π»ΡŒΠΊΠΈ Π·Π° памятала Ρ– ΠΎΡ†Π΅ Π° Ρ‚Π°ΠΊ я Π½Π°Π²Ρ–Ρ‚ΡŒ ΠΉΠΎΠ³ΠΎ Ρ–ΠΌΠ΅Π½Ρ– ΠΉ Ρ„Π°ΠΌΡ–Π»Ρ–Ρ— Π½Π΅ Π·Π½Π°Π² я Π΄ΡƒΠΆΠ΅ Ρ€Ρ–Π΄ΠΊΠΎ заступала Ρ†Ρ– ΠΊΠ°Ρ€Ρƒ Ρ‚Π°ΠΌ Π΄Π΅ срочного слуТба я Π½Π΅ ΠΌΠΎΠΆΡƒ Π·Π½Π°Ρ‚ΠΈ Ρ‡ΠΎΠΌΡƒ Π²Ρ–Π½ Ρ‚Π°ΠΊ Π·Ρ€ΠΎΠ±ΠΈΠ² Π½Π°Π²ΠΏΡ€ΠΎΡ‚ΠΈ ΠΆΠ°Π½ΠΈ Ρ€Π΅Π°Π½Ρ–ΠΌΠ°Ρ†Ρ–Ρ— ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π½ΠΈΠΊ Ρ–Π³ΠΎΡ€ самСнСнко ΠΏΡ–Π΄ час стрлянини Π²Ρ–Π΄ΠΏΠΎΡ‡ΠΈΠ²Π°Π² Π·Π° Π³Ρ€Π°Ρ„Ρ–ΠΊΠΎΠΌ ΠΏΠΎΠ²ΠΎΡ€ΠΎΠΆΠ΅ Π·Π°Π±Ρ–Π³Π°ΡŽ Ρ‚ΠΈΠΊΡ€Ρ‡ΠΈΡˆΠΎΡ‚Π°ΠΌΡΡ‡Ρƒ ксюш ΡΡƒΠΌΠ½ΠΎΡŽ нашС
100
- ```
101
-
102
- mer_lviv_interview.wav:
103
-
104
- ```
105
- ΠΌΠΈ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊΠ° Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ області Π° Ρ†Π΅ Ρ” Ρ„Π°Ρ…ΠΎΠ²Π° людина Ρ– Π· Π΄ΡƒΡ€Π½Π΅ міста ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠΎΡ‚ΡƒΠ²Π°ΠΈ наш ΡƒΠΏΡ€Π°Π²Π»Ρ–Π½Π½Ρ– Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ… ситуаії ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ– Π²ΠΎΠ½ΠΎ ΠΌΠ°Ρ” Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ Π½Π°Π·Π²ΠΈΡ‡ΠΉΠ½Ρ… ΡΠΈΡ‚ΡƒΠ°Ρ†Ρ–Π²Ρ–Π»ΡŒΠ½ΠΎΠ³ΠΎ захист Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Ρ– Π² нас Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ якісна співпрая якісна ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†Ρ–Ρ— Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ заначаміста Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρ‚ΠΈ Π΄Π΅Ρ€ΠΆΠ°Π²Π½ΠΎΠΌΡƒ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ ΠΊΡ–Ρ€ΡƒΠ½ΠΊΡƒ Ρ‰ΠΎΠ± Π²Ρ–Π½ якісно Π·Π° ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Π² стосовно Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΠΈ стосовно обладнання Ρ– стосовно Ρ€Π΅ΠΊΡ€ΡƒΡ‚Π΅Π½Π³Ρƒ людСй які Π·Π°Ρ€Π°Π· Π³ΠΎΠ»ΠΎΡˆΡƒΠ»ΠΈΡΡ Ρ‰ΠΎ Π±ΠΈ Π±ΡƒΡ‚ΠΈ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°Ρ… Π² Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½Ρ– Π½Π° Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Ρ— міста любова Π½Π° ΡΡ‚Π²Ρ€ΡŽΡŽΡ‚ΡŒΡΡ Π΄Π²Π±Π°Ρ‚Π°ΡŒΠΎΠ½ΠΈ Ρ– Π½Π°Ρ€Π°Π·Ρ– всС ΠΉΠ΄Π΅ Ρ‡Ρ–Ρ‚ΠΊΠΎ Π·Π° Ρ‚ΠΈΠΌΠ»Π°Π½Π°ΠΌ які Π²ΠΈΠ·Π½Π°Ρ‡Π΅Π½ΠΎ Π΄Π΅Ρ€ΠΆΠ°Π²ΠΎΡŽ Π½Π°Ρ‚ΠΎΠΌΡ–ΡΡ‚ΡŒ місто взяла Π½Π° сСбС Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ ΠΌΠΈ ΠΎΡ‡Π°Π»ΠΈ Π²Π΅Π»ΠΈΠΊΠΈΠΉ Π½Π°Π²Ρ‡Π°Π»ΡŒΠ½ΠΈΠΉ процСс для ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΡ–Π² ΠΊΠΎΠΌΡƒΠ½Π°Π»ΡŒΠ½ΠΈΡ… підприємсособливо ΠΌΠΎΠ² для ΠΏΡ€ΠΎ стратСгічнС підприємства ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΠΈ Π²ΠΈΠΊΠΎΠ½Π°Π²Ρ‡ΠΈΠΉ Ρ…ΠΎΡ€ΠΎΠ½Π½Ρ– Π²Π»Π°Π΄ΠΈ банально Π²Ρ–Π΄Π½ΠΎΠ²ΠΈΡ‚ΠΈ Π½Π°Π²ΠΈΠΊΠΈ володіння Π·Π±Ρ€ΠΎΡŽ Π² Π½Π°ΡˆΠΈΡ… ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΡ–Π² люсваТливи Ρ‡ΠΈΠ½ΠΈΠΊΡ†Π΅ уміння Π½Π°Π΄Π°Π²Π°Ρ‚ΠΈ ΠΏΠ΅Ρ€ΡˆΡƒ Π΄ΠΎ ΠΌΠ΅Π΄ΠΈΡ‡Π½Ρƒ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρƒ Ρ– Π·Π° Ρ‚Π°ΠΊΠ° Π²Π΅Π»ΠΈΠΊΠ° хвиля яка після закінчСння ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ²Π½ΠΎ Π΄Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΠΈ Ρ– ΡΡ‚Π°Ρ€ΡˆΠΎΠΊΠ»Π°ΡΠ½ΠΈΠΊΡ–Π² ΠΌΠΈ Π½Π° ΠΏΡ€ΠΈ Π²Π΅Π»ΠΈΠΊΠΈΠΉ Таль Π±Π°Π³Π°Ρ‚ΠΎ Π² остнніх Ρ€ΠΎΠΊΡ–Π² Ρ‚Π°ΠΊΠ΅ враТСння Ρ‰ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΡƒΠ²Π°Π»ΠΈ Π»ΡŽΡ‚Ρ€ΠΈΠ½ΠΎΠΌΡƒ сні Ρ€ΠΎΠ·ΡƒΠΌΡ–ΡŽΡ‡ΠΈ Ρ‰ΠΎ росія ΠΏΠΎΡ€ΡƒΡ‡ Ρ– Π·Π° Π²ΠΈ Π±ΡƒΠ΄Π΅ Ρ†Π΅Π½Ρ‚Ρ€ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ агрСсії Π½Π°ΠΌ Ρ‚Ρ€Π΅Π±Π° Π²ΠΈΡˆΠΊΠΎΠ»ΡŽΠ²Π°Ρ‚ΠΈ сСбС Ρ– Π±ΡƒΡ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ Ρ‰ΠΎΠ± Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Ρ€Ρ–Π΄Π½Ρƒ Π΄Π΅Ρ€ΠΆΠ°Π²Ρƒ якщо ΠΊΠΎΠΆΠ΅Π½ ΡƒΠΊΡ€Π°Ρ—Π½Π΅Ρ†ΡŒ Π±ΡƒΠ΄Π΅ Π΄ΠΎΠ±Ρ€Π΅ Π²ΠΎΠ»ΠΎΠ΄Ρ–Ρ‚ΠΈ Π½Π°Π²ΠΈΠΊΠ°ΠΌΠΈ ΡΡ‚Ρ€ΠΈΠ»Π΅Ρ†ΡŒΠΊΠΎΡ— Π·Π±Ρ€ΠΎΡ— Π±ΡƒΠ΄Π΅ Π²ΠΌΡ–Ρ‚ΠΈ Π½Π°Π΄Π°Π²Π°Ρ‚ΠΈ ΠΌΠ΄ΠΈΡ‡Π½Ρƒ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρƒ Π² Π±ΠΈΠΌΠ΅Π½Π΅ Ρ†Π΅ ΠΏΠΎΡ‚ΡƒΠΆΠ½Π° сила яку Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Π·Π΄ΠΎΠ»Π°Ρ‚ΠΈ Ρ‚ΠΎΠΌΡƒ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†Ρ–Ρ— Π· Π΄Π΅Ρ€ΠΆΠ°Π²Ρƒ Ρ– рухаємося Π²ΠΏΠ΅Ρ€Π΅Π΄ Ρ‰Π΅ Ρ‚Π°ΠΊΠ΅ питання ΠΎΡ‚Ρƒ нас Π±Π°Π³Π°Ρ‚ΠΎ ΠΊΠ°ΠΆΡƒΡ‚ΡŒ Ρ‰ΠΎ ΠΏΠΎΡ€ΡƒΡ‡ Ρ– Π±Ρ€ΠΈΠ³Π°Π΄Π° ΠΌΠΈ сил Ρ‚Π΅Ρ€Ρ‚Ρ€Π°Π»ΡŒΠΎ ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ ΠΌΠΎΠΆΡƒΡ‚ΡŒ ΡΡ‚Π²Ρ€ΡŽΠ²Π°Ρ‚ΠΈΡΡ Ρ– формуватися Π΄ΠΎΡ€ΠΎΠ²ΠΎΠ»ΡŒΡ‡Ρ– обєднання Ρ‡ΠΈ Ρƒ вслвові Ρ†Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π΅Π½ΠΎ Ρ– як вашС ставлСння Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Ρ–Ρ†Π΅ ΠΌΠΈ ΠΏΡ€Π°Ρ†ΡŽΡ”ΠΌΠΎ Π² Ρ‡ΡƒΡ‚ΠΊΡ–ΠΉΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†Ρ–Ρ— Π· Π΄Π΅Ρ€ΠΆΠ°Π²Π½ΠΈΠΌΠΈ інституціями Ρ– Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ–ΡˆΠ½Ρ–ΠΉ дСнь я Π½Π΅ Π±Π°Ρ‡Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ Π² Ρ–Π½ΡˆΠΈΡ… формування Ρ… Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ– ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ Торстка Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ†Π΅Π½Ρ‚Ρ€ правління сла ΠΎΠ±ΠΎΠ³ΠΎΡ‰ΠΎ Ρ” Π½ΠΎΠ²ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΡƒΠ²Π°Ρ‡ Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π΅Ρ€ΠΆΠ°Π²ΠΈ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊ ΡˆΡ‚Π°Π±ΠΎΠ½ΠΎΠ²ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ– ΠΏΠ°Π½ Ρƒ Ρ‚ΠΎ який Π² нас Ρƒ Ρ‡ΡƒΠ»ΠΈ Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½Ρƒ ΠΎΡ€ΠΎΠ½Ρƒ області Π½Π° Ρ†Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°Ρ…ΠΎΠ²Π° ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ‚Π½Π° людина Π· Π½ΠΈΠΌ просто Ρ€Ρ”ΠΌΠ½ΠΎ сів ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ Π² Π½Π΅ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ” всС співслов Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π΅Π½Π° ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ прикидання Π² Ρ€Π°Π·Ρ– Ρ‚Π°ΠΊΠΎΡ— Π½Π°Π³Π°Π»ΡŒΠ½ΠΎΡ— ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ пСрСкидання Π±Ρ€ΠΈΠ³Π°Π΄Π° сил Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π² Π·ΠΎΠ½ΠΎΠ±ΠΎΡ”Π²ΠΈΡ…Π΄Ρ– Π²Ρ–Ρ‡Ρ– області якС вашС ΡΡ‚Π°Π²Π»Π΅Π½Π½Π΄ΠΎΡ†ΡŒΠΎΠ³ΠΎ Ρ– ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Π²Π°ΠΌ Π²Ρ–Π΄ΠΎΠΌΠΎ як�� ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ ставлСння Ρƒ самих сів Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π²Ρ–Ρ†Ρ– Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ–ΡˆΠ½Ρ–ΠΉ дСнь ΠΌΠΈ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ”ΠΌΠΎ Ρ‰ΠΎ Π²Ρ–Π½ Ρ„ΠΎΡ€Ρ†Ρ–ΠΉΠ½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρ– Ρ‚Ρ€Π΅Π±Π° Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Ρ‚ΠΈΡ‚Π°Π½Ρ–Ρ‡Π½ΠΈΠΎΠ±Ρ”ΠΌ ΠΏΡ€Π°Ρ†Ρ– людям Ρ‚Ρ€Π΅Π±Π° пояснити Ρ‰ΠΎ Ρ‚ΠΈ Π½Π΅ моТСш сховатисяу власному ΠΏΠΎΠΌΠ΅ΡˆΠΊΠ°Π½Ρ– ΠΊΠΎΠ»ΠΈ ΠΏΡ€ΠΈΠΉΠ΄Π΅ Π²ΠΎΡ€ΠΎΠ³ Π²ΠΎΡ€ΠΎΠ³Π° Ρ‚Ρ€Π΅Π±Π° Π½Π΅ пустити Π½Π° Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Ρ— Π½Π°ΡˆΠΎΡ— ΠΊΡ€Π°Ρ—Π½ΠΈ Ρ– я Π΄ΡƒΠΌΠ°ΡŽ Ρ‰ΠΎ всі громадяни ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– ΠΌΠ°Ρ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π½Ρ–Π·Π°Ρ…ΠΈ Ρ‰Π°Ρ‚ΠΈ свої Ρ€Ρ–Π΄Π½Ρƒ ΠΊΡ€Ρ—Π½Ρƒ Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ–ΡˆΠ½Ρ–ΠΉ дСнь ΠΉΠ΄Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΈΠΉ процСс люди Π·Π°ΠΏΠΈΡΡƒΡ”Ρ‚ΡŒΡΡ Π΄ΡƒΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ Π²Ρ–Π΄ΠΎΠΌΠ΅Π»ΡŽΠ΄Π΅ΠΉ записуся Π² Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½Ρƒ ΠΎΠ±ΠΎΡ€ΠΎΠ½Ρƒ я вваТаю Ρ†Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ Ρ‚Ρ€Π΅Π±Π° ΠΌΠ°Ρ‚ΠΈ Ρ‚Π°ΠΊΠΈ висів Π° стосовно всіх Ρ–Π½ΡˆΠΈΡ… Ρ€Π΅Ρ‡Π΅ΠΉ Ρ‰Π΅ Ρ€Π°Π· Π½Π°Π³ΠΎΠ»ΠΎΡˆΡƒΡŽ ΠΊΠΎΠ»ΠΈ ΠΌΠΎΠ²Π° ΠΉΠ΄Π΅ ΠΏΡ€ΠΎ Π±Π΅Π·ΠΏΠ΅ΠΊΡƒ ΠΏΡ€ΠΎ ΠΎΠ±ΠΎΡ€ΠΎΠ½Ρƒ Π΄Π΅Ρ€ΠΆΠ°Π²ΠΈ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ субординація Ρ– Ρ” Ρ‡Ρ–Ρ‚ΠΊΠ° Π΄Π΅Ρ€ΠΆΠ°Π²Π½Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΡ‚Ρ€Π΅Π±Π° Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Π±ΡƒΠ΄Π΅ΠΌΠΎ сі Ρ€Π°Π·ΠΎΠΌ Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Π½Π΅ΠΌΠ° Π½Π°Ρ‚ΠΎΡ€Π°Π΄ΠΈΠ° Ρ‰Π΅ ΠΎΠ΄Π½Π΅ питання Π±Π°Π³Π°Ρ‚ΠΎ Ρ…Ρ‚ΠΎ Π²ΠΏΠ΅ΠΎΠ½ΠΈΠΉΡ‰ΠΎ Π·Π°ΠΊΠΎΠ½Ρ–Π½Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ Π²Π»Π°Π΄ΠΈ ΠΏΡ€ΠΎ писано для місцСвС адміністрації Π²Π»Π΄ΠΈΠΌΠ°Ρ”Ρ‚ΡŒΡΡ Π½Π° ΡƒΠ²Π°Π·Ρ– повноваТСнь Ρ– моТливості ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ²Π°Π½Π½Ρ– Ρ€ΠΎΠ·Π³ΠΎΡ€Ρ‚Π°Π½Π½Ρ– сил Ρ‚ΠΎΠ΅ΠΈΡ‚Ρ€Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π²ΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ†Ρ– зіткнулися Π²ΠΆΠ΅ Ρ†ΠΈΠΌ Ρ– як Π²ΠΈ ΠΎΡ†Ρ–Π½ΡŽΡŽΡ‚ΡŒ ся Ρ†Π΅ Π½Ρƒ ΠΏΠΎ ΠΏΠ΅Ρ€ΡˆΠ΅ Π΄ΠΎΠ±Ρ€Π΅ Ρ‰ΠΎ Π·Π°ΠΊΠΎΠ½ Ρ” Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎ Ρ‰ΠΎ ΠΎΠ΄ ΠΆΠΎΠ΄Π΅Π½ Π·Π°ΠΊΠΎΠ½ Π½Π΅ Ρ” Ρ‚Π° ΠΎΠ±Ρ‚Π°Π»ΡŒΠ½ΠΈΠΉ Ρ‡ΠΈ Ρ–Π΄Π΅Π°Π»ΡŒΠ½ΠΈΠΉ Π²Ρ–Π½ ΠΌΠ°Π² Π±ΠΈ процСсі Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Тиття Π·Π° Π·Π½Π°Ρ‚ΠΈ ΠΏΠ΅Π²Π½ΠΈΡ… ΠΊΡ€ΡΠ³ΡƒΠ²Π°Π½ΡŒ Ρƒ Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊΠΎΠΌ Ρ‚Π΅Ρ€ΠΈΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π² часі Π½Π° Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎΡ— ситуації Ρ” Π³ΠΎΠ»ΠΎΠ²Π° обласної адміністрації Ρ‚Π°ΠΊ Π° ΠΏΠΎ місто любово Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊΠΎΠΌ Ρ” ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊ Ρ€Π°ΠΉΠΎΠ½Π½ΠΎΡ— адміністрації Ρ†Π΅ Ρ” Π½Π΅ Π²Π΅Π»ΠΈΠΊΠΈΠΉ офісі Ρ” Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠ° ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΡ–Π² Ρ– Π²ΠΎΠ½ΠΈ ΠΌΠ°Π»ΠΈ Π±ΠΈ стояти Π½Π°Π΄ Π³Ρ€ΠΎΠΌΠ°Π΄ΠΈ міста льоа я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ Ρ‰ΠΎ Ρ†Π΅ Π±ΡƒΠ΄Π΅ ΠΌΠ°Ρ‚ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŽ якісний Π΅Ρ„Π΅ΠΊΡ‚ Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ” крівникобласті я ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊ мста Π°Π»Π΅ Ρ†Ρ– Ρ€Π΅Ρ‡Ρ– Π½Π°ΠΏΠ΅Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈ писали Π·Π°ΠΊΠΎΠ½ Π½Π΅ Π΄ΠΎ кінця ΠΏΡ€Ρ€Π°Ρ…ΠΎΠ²ΡƒΠ²Π°Π»ΠΈ Π°Π»Π΅ ΠΌΠΈ ΠΌΠ°Ρ”ΠΌΠΎ час Ρ‰ΠΎΠ± Ρ†Π΅ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ Π°Π»Π΅ Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ– ΠΌΠΈ Ρ‡Ρ–Ρ‚ΠΊΠΎ Π²ΠΈΠΊΠΎΠ½ΠΈΠΎΠ·Π°ΠΊΠ½ΠΈ який Ρ” Ρ–Π½ΡˆΠΈΡ… Π²Π°Ρ€Ρ–Π°Π½Ρ‚Ρ–Π² Π½Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ ΠΏΠ°Π½Π΅ Π°Π½Π΄Ρ€Ρ–ΡŽΠ±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ остання Π·Π°ΠΏΠΈΡ‚Π½Π½ΡΠ²Π°ΡˆΠ° Π±Ρ€ΠΈΠ³Π°Π΄Π° Ρ‚Π»Π²Ρ–Π²ΡΡŒΠΊΠ°Π½Ρƒ Π΄Π²Π° Π±Π°Ρ‚Π°Π»ΡŒΠΉΠΎΠ½ як Π²ΠΈΠΊΡ€ΠΈΡ‚ΠΈ як Π²ΠΎΠ½ΠΈ Π·Π°Ρ€Π°Π· ΠΎΠ·Π±Ρ€ΠΎΡ”Π½Ρ– ΠΏΠΎΠ²Π½Ρ–ΡΡ‚ΡŽ Ρ‡ΠΈ Π½Ρ–Ρ‡ Ρ†Π΅ Ρ‚Ρ–Π»ΡŒΠΊΠΈ ΡΡ‚Ρ€ΠΈΠ»Π΅Ρ†ΡŒΠΊΠ΅ Π·Π±Ρ€Ρ—Ρ‡ΠΈΡ†Π΅ ΠΉ Π±Ρ–Π»ΡŒΡˆ Π²Π°ΠΆΠΊΠ΅ ΠΎΠ·Π±Ρ€ΠΎΡ”Π½Π½ Ρ– як Π² ΡΡ‚Π°Π²ΠΈΡ‚ΠΈΡŒ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ Ρ‰ΠΎΠ± ΠΌΡ–ΡΡŒΠΊΠ΄Π½Ρ–ΡΡ‚Ρ€Π°Ρ†Ρ–Ρ ΠΌΠ°Π»Π° ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒΠΊΠ°ΠΆΡ–ΠΌΠΎ Ρ‰ΠΎΡΡŒ ΠΊΡƒΠΏΡƒΠ²Π°Ρ‚ΠΈ для забзпСчСння самС си Ρ‚Ρ€Ρ‚Ρ€Ρ–Π°Π»ΡŒΠΎΠΎΡ€ΠΎΠ½ Ρƒ Π½Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Ρ‚Ρ– ΠΆ самі виспілотники для Ρ€ΠΎΠ·Π²Ρ–Π΄ΠΊΠΈ Π°Π±ΠΎ засоби звязку Π° Π°Π±ΠΎ ось Ρ‰ΠΎΡΡŒ Ρ‚Π°ΠΊΠ΅ Π½Ρƒ Ρ‰ΠΎ Π²ΠΈ Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΈ ΠΌΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ Π±Π°Π³Π°Ρ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ”ΠΌΠΎ всім нашим Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²ΠΈΠΌ частинам Π±Π°Ρ‚Π°Π»ΡŒΠΎΠ°ΠΌ Ρ†Π΅ Ρ€ΠΎΠ±ΠΈΠ»ΠΈ вчорастобупі Ρ‚Π°Ρ‚ΠΎΠΌ Ρƒ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠΊΡƒ якщо Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΏΡ€ΠΎ сили Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½Ρƒ ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ області ΠΌΠΈ Π΄ΠΎΠΏΠΎΠΌΠΎΠΆΠ΅ ΠΌΠΎ усім Ρ‡ΠΈΠΌ Π±ΡƒΠ΄Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ ΠΌΠΎΠ²Π° ΠΏΡ€ΠΎ Π³Ρ€ΠΎΡˆΡ– Π½Π΅ ΠΉΠ΄Π΅ ΠΌΠΈ Π½Π΅ профінансуємо Ρ€Π΅ΠΌΠΎΠ½Ρ‚Ρƒ Ρ‡ΠΈ Ρ–Π½ΡˆΠΎΡ— Π²ΡƒΠ»ΠΈΡ†Ρ– Π° нашим хлопцям Π΄ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌΠΎ Ρ– Ρ†Π΅ ΠΌΠ°Ρ” Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ ΠΊΠΎΠ½Π° Π³Ρ€ΠΎΠΌΠ°Π΄Π° Ρ– ΠΊΠΎΠΆΠ΅Π½ Π»Ρ–Π΄Π΅Ρ€ Π³ΠΌΠ°Π΄ΠΈ Π² Π½Π°ΡˆΡ–ΠΉ ΠΊΡ€Π°Ρ—Π½Ρ–
106
- ```
107
-
108
- mer_lviv_interview.wav (with better News LM):
109
-
110
- ```
111
- ΠΌΠΈ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊΠ° Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ області Π° Ρ†Π΅ Ρ” Ρ„Π°Ρ…ΠΎΠ²Π° людина Ρ– Π· Ρ‚ΡƒΡ€Π½Π΅ міста ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡƒΠ²Π°Π»ΠΈ нашС управління Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ… ситуаії ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ– Π²ΠΎΠ½ΠΎ ΠΌΠ°Ρ” Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ Π½Π°Π΄Π·Π²ΠΈΡ‡ΠΉΠ½ΠΈΡ… ситуацї Ρ†Ρ–Π²Ρ–Π»ΡŒΠ½ΠΎΠ³ΠΎ захист Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Ρ– Π² нас Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ якісна співпраця якісна координація Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ Π·Π°Π΄Π°Ρ‡Π° міста Π΄ΠΎΠΏοΏ½οΏ½ΠΌΠΎΠ³Ρ‚ΠΈ Π΄Π΅Ρ€ΠΆΠ°Π²Π½ΠΎΠΌΡƒ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ ΠΊΠ΅Ρ€ΡƒΠ½ΠΊΡƒ Ρ‰ΠΎΠ± Π²Ρ–Π½ якісно Π·Π°ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Π² стосовно Ρ€Π΅ΠΌΠΎΠ½Ρ‚Ρ– стосовно обладнання Ρ– стосовно Ρ€Π΅ΠΊΡ€ΡƒΡ‚ΠΈΠ½Π³Ρƒ людСй які Π·Π°Ρ€Π°Π· Π·Π³ΠΎΠ»ΠΎΡˆΡƒΠ²Π°Π»ΠΈΡΡ Ρ‰ΠΎΠ±ΠΈ Π±ΡƒΡ‚ΠΈ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°Ρ… Π² Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½Ρ–ΠΉ ΠΎΠ±ΠΎΡ€ΠΎΠ½Ρ– Π½Π° Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Ρ— міста любова Π½Π° ΡΡ‚Π²Ρ€ΡŽΡŽΡ‚ΡŒΡΡ Π±Π°Ρ‚Π°Π»ΡŒΠΎΠ½ΠΈ Ρ– Π½Π°Ρ€Π°Π·Ρ– всС ΠΉΠ΄Π΅ Ρ‡Ρ–Ρ‚ΠΊΠΎ Π·Π° Ρ‚ΠΈΠΌ Π»Π°Π½ΠΎΠΌ які Π²ΠΈΠ·Π½Π°Ρ‡Π΅Π½ΠΎΡ— Π΄Π΅Ρ€ΠΆΠ°Π²ΠΎΡŽ Π½Π°Ρ‚ΠΎΠΌΡ–ΡΡ‚ΡŒ місто взяло Π½Π° сСбС Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ ΠΌΠΈ ΠΎΡ‡Π°Π»ΠΈ Π²Π΅Π»ΠΈΠΊΠΈΠΉ Π½Π°Π²Ρ‡Π°Π»ΡŒΠ½ΠΈΠΉ процСс для ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΡ–Π² ΠΊΠΎΠΌΡƒΠ½Π°Π»ΡŒΠ½ΠΈΡ… підприємстособливо ΠΌΠΎΠ² для ΠΏΡ€ΠΎ стратСгічні підприємства ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΠΈ Π²ΠΈΠΊΠΎΠ½Π°Π²Ρ‡ΠΈΠΉ Ρ…ΠΎΡ€Π°Π½Ρ– Π²Π»Π°Π΄ΠΈ банально Π²Ρ–Π΄Π½ΠΎΠ²ΠΈΡ‚ΠΈ Π½Π°Π²ΠΈΠΊΠΈ володіння Π·Π±Ρ€ΠΎΡ”ΡŽ Π² Π½Π°ΡˆΠΈΡ… ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΡ–Π² плюс Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ Ρ‡ΠΈΠ½Π½ΠΈΠΊ Ρ†Π΅ уміння Π½Π°Π΄Π°Π²Π°Ρ‚ΠΈ ΠΏΠ΅Ρ€ΡˆΡƒ Π΄ΠΎΠΌΠ΅Π΄ΠΈΡ‡Π½Ρƒ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρƒ Ρ– Π·Π° Ρ‚Π°ΠΊΠ° Π²Π΅Π»ΠΈΠΊΠ° хвиля яка після закінчСння ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ²Π½ΠΎ Π±ΡƒΠ΄Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΠΈ Ρ– ΡΡ‚Π°Ρ€ΡˆΠΎΠΊΠ»Π°ΡΠ½ΠΈΠΊΡ–Π² ΠΌΠΈ Π½Π°ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈΠΊΠΈΠΉ Таль Π±Π°Π³Π°Ρ‚ΠΎ Π² останніх Ρ€ΠΎΠΊΡ–Π² Ρ‚Π°ΠΊΠ΅ враТСння Ρ‰ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΡƒΠ²Π°Π»ΠΈ літориномусні Ρ€ΠΎΠ·ΡƒΠΌΡ–ΡŽΡ‡ΠΈ Ρ‰ΠΎ росія ΠΏΠΎΡ€ΡƒΡ‡ Ρ– Π·Π° Π²ΠΈΠ±ΡƒΠ΄Π΅ Ρ†Π΅Π½Ρ‚Ρ€ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ агрСсії Π½Π°ΠΌ Ρ‚Ρ€Π΅Π±Π° Π²ΠΈΡˆΠΊΠΎΠ»ΡŽΠ²Π°Ρ‚ΠΈ сСбС Ρ– Π±ΡƒΡ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ Ρ‰ΠΎΠ± Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Ρ€Ρ–Π΄Π½Ρƒ Π΄Π΅Ρ€ΠΆΠ°Π²Ρƒ якщо ΠΊΠΎΠΆΠ΅Π½ ΡƒΠΊΡ€Π°Ρ—Π½Π΅Ρ†ΡŒ Π±ΡƒΠ΄Π΅ Π΄ΠΎΠ±Ρ€Π΅ Π²ΠΎΠ»ΠΎΠ΄Ρ–Ρ‚ΠΈ Π½Π°Π²ΠΈΠΊΠ°ΠΌΠΈ ΡΡ‚Ρ€Ρ–Π»Π΅Ρ†ΡŒΠΊΠΎΡ— Π·Π±Ρ€ΠΎΡ— Π±ΡƒΠ΄Π΅ Π²ΠΌΡ–Ρ‚ΠΈ Π½Π°Π΄Π°Π²Π°Ρ‚ΠΈ ΠΌ Π΄ΠΈΡ‡Π½Ρƒ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρƒ Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ†Π΅ ΠΏΠΎΡ‚ΡƒΠΆΠ½Π° сила яку Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Π·Π΄ΠΎΠ»Π°Ρ‚ΠΈ Ρ‚ΠΎΠΌΡƒ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†Ρ–Ρ— Π· Π΄Π΅Ρ€ΠΆΠ°Π²Ρƒ Ρ– рухаємося Π²ΠΏΠ΅Ρ€Π΅Π΄ Ρ‰Π΅ Ρ‚Π°ΠΊΠ΅ питання ΠΎΡ‚ Ρƒ нас Π±Π°Π³Π°Ρ‚ΠΎ ΠΊΠ°ΠΆΡƒΡ‚ΡŒ Ρ‰ΠΎ ΠΏΠΎΡ€ΡƒΡ‡ Ρ–Π· Π±Ρ€ΠΈΠ³Π°Π΄Π°ΠΌΠΈ сил Ρ‚Π΅Ρ€Ρ‚Ρ€Π°Π»ΡŒΠΎΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ ΠΌΠΎΠΆΡƒΡ‚ΡŒ ΡΡ‚Π²Ρ€ΡŽΠ²Π°Ρ‚ΠΈΡΡ Ρ– формуватися Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΡ‡Ρ– обєднання Ρ‡ΠΈ ΡƒΠ²ΠΎΠ»Π²ΠΎΠ²Ρ– Ρ†Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π΅Π½ΠΎ як вашС ставлСння Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Ρ–Ρ†Π΅ ΠΌΠΈ ΠΏΡ€Π°Ρ†ΡŽΡ”ΠΌΠΎ Π² Ρ‡Ρ–Ρ‚ΠΊΠΈΠΉΠΊΠΎΡ€Π΄ΠΈΠ½Π°Ρ†Ρ–Ρ— Π· Π΄Π΅Ρ€ΠΆΠ°Π²Π½ΠΈΠΌΠΈ інституціями Ρ– Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ–ΡˆΠ½Ρ–ΠΉ дСнь я Π½Π΅ Π±Π°Ρ‡Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ Π² Ρ–Π½ΡˆΠΈΡ… формуваннях Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ– ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ Торстка Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ†Π΅Π½Ρ‚Ρ€ управління сла ΠΎΠ±ΠΎ Ρ‰ΠΎ Ρ” Π½ΠΎΠ²ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΡƒΠ²Π°Ρ‡ Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π΅Ρ€ΠΆΠ°Π²ΠΈ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊ шабанови ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ– ΠΏΠ°Π½Ρƒ Ρ‚ΠΎ які Π² нас ΡƒΡ‡ΡƒΠ»ΠΈ Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½Ρƒ ΠΎΡ€ΠΎΠ½ області Π½Π° Ρ†Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°Ρ…ΠΎΠ²Π° ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ‚Π½Π° людина Π· Π½ΠΈΠΌ просто ΠΏΡ€ΠΈΡ”ΠΌΠ½ΠΎ ΡΠΏΡ–Π²ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ Π½Π΅ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ” всС співслова Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π΅Π½Π° ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ пСрСкидання Π² Ρ€Π°Π·Ρ– Ρ‚Π°ΠΊΠΎΡ— Π½Π°Π³Π°Π»ΡŒΠ½ΠΎΡ— ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ пСрСкидання Π±Ρ€ΠΈΠ³Π°Π΄ сил Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π² Π·ΠΎΠ½Ρƒ Π±ΠΎΠΉΠΎΠ²ΠΈΡ… Π΄Ρ–ΠΉ Π²Ρ–Π½ΡˆΡ–ΠΎΠ±Π»Π°ΡΡ‚Ρ– якС вашС ставлСнн Π΄ΠΎ Ρ†ΡŒΠΎΠ³ΠΎ Ρ– ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Π²Π°ΠΌ Π²Ρ–Π΄ΠΎΠΌΠΎ якС ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ ставлСння рсу самих Π±Ρ–ΠΉΡ†Ρ–Π² Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π²Ρ–Π΄ Ρ†Π΅ Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ–ΡˆΠ½Ρ–ΠΉ дСнь ΠΌΠΈ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ”ΠΌΠΎ Ρ‰ΠΎ Π²Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΠΉΠ½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρ– Ρ‚Ρ€Π΅Π±Π° Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Ρ‚ΠΈΡ‚Π°Π½Ρ–Ρ‡Π½ΠΈΠΉ ΠΎΠ±Ρ”ΠΌ ΠΏΡ€Π°Ρ†Ρ– людям Ρ‚Ρ€Π΅Π±Π° пояснити Ρ‰ΠΎ Ρ‚ΠΈ Π½Π΅ моТСш сховатися Ρƒ власному ΠΏΠΎΠΌΠ΅ΡˆΠΊΠ°Π½Π½Ρ– ΠΊΠΎΠ»ΠΈ ΠΏΡ€ΠΈΠΉΠ΄Π΅ Π²ΠΎΡ€ΠΎΠ³ Π²ΠΎΡ€ΠΎΠ³Π° Ρ‚Ρ€Π΅Π±Π° Π½Π΅ пустити Π½Π° Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–ΡŽ Π½Π°ΡˆΠΎΡ— ΠΊΡ€Π°Ρ—Π½ΠΈ Ρ– я Π΄ΡƒΠΌΠ°ΡŽ Ρ‰ΠΎ всі громадяни ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– ΠΌΠ°Ρ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π½Ρ– Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ свою Ρ€Ρ–Π΄Π½Ρƒ ΠΊΡ€Ρ—Π½Ρƒ Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ–ΡˆΠ½Ρ–ΠΉ дСнь ΠΉΠ΄Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΈΠΉ процСс люди Π·Π°ΠΏΠΈΡΡƒΡ”Ρ‚ΡŒΡΡ Π΄ΡƒΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ Π²Ρ–Π΄ΠΎΠΌΠ΅ людСй Π·Π°ΠΏΠΈΡΡƒΡ”Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½Ρƒ ΠΎΠ±ΠΎΡ€ΠΎΠ½Ρƒ я вваТаю Ρ†Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ Ρ‚Ρ€Π΅Π±Π° ΠΌΠ°Ρ‚ΠΈ Ρ‚Π°ΠΊΡ– Π²ΠΈΡˆΠΊΡ–Π» Π° стосовно всіх Ρ–Π½ΡˆΠΈΡ… Ρ€Π΅Ρ‡Π΅ΠΉ Ρ‰Π΅ Ρ€Π°Π· Π½Π°Π³ΠΎΠ»ΠΎΡˆΡƒΡŽ ΠΊΠΎΠ»ΠΈ ΠΌΠΎΠ²Π° ΠΉΠ΄Π΅ ΠΏΡ€ΠΎ Π±Π΅Π·ΠΏΠ΅ΠΊΡƒ ΠΏΡ€ΠΎ ΠΎΠ±ΠΎΡ€ΠΎΠ½Ρƒ Π΄Π΅Ρ€ΠΆΠ°Π²ΠΈ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ субординація Ρ– Ρ” Ρ‡Ρ–Ρ‚ΠΊΠ° Π΄Π΅Ρ€ΠΆΠ°Π²Π½Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒ Ρ‚Ρ€Π΅Π±Π° Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Π±ΡƒΠ΄Π΅ΠΌΠΎ сі Ρ€Π°Π·ΠΎΠΌ Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Π½Π΅ΠΌΠ° Π½Π° Ρ‚ΠΎ Ρ€Π°Π΄ΠΈ Π° Ρ‰Π΅ ΠΎΠ΄Π½Π΅ питання Π±Π°Π³Π°Ρ‚ΠΎ Ρ…Ρ‚ΠΎ Π²ΠΏΠ΅Π²Π½Π΅Π½οΏ½οΏ½ΠΉ Ρ‰ΠΎ Π² Π·Π°ΠΊΠΎΠ½Ρ– Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ Π²Π»Π°Π΄ΠΈ прописано для місцСвих Π΄ міністрації Π²Π»Π΄ΠΈ ΠΌΠ°Ρ”Ρ‚ΡŒΡΡ Π½Π° ΡƒΠ²Π°Π·Ρ– повноваТСнь Ρ– моТлвостпри Ρ„ΠΎΡ€ΠΌΡƒΠ²Π°Π½Π½Ρ– Ρ€ΠΎΠ·Π³ΠΎΡ€Ρ‚Π°Π½Π½Ρ– сил Ρ‚ΠΎΡ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π²ΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ†Ρ– зіткнулися Π²ΠΆΠ΅ Ρ†ΠΈΠΌ Ρ– як Π²ΠΈ ΠΎΡ†Ρ–Π½ΡŽΡŽΡ‚ΡŒΡΡΡ†Π΅Π½Ρƒ ΠΏΠΎΠΏΠ΅Ρ€ΡˆΠ΅ Π΄ΠΎΠ±Ρ€Π΅ Ρ‰ΠΎ Π·Π°ΠΊΠΎΠ½ Ρ” Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎ Ρ‰ΠΎ ΠΆΠΎΠ΄ΠΎΠ΄Π΅Π½Π·Π·Π°ΠΎΠ½ Π½Π΅ Ρ” Ρ‚Π° ΠΎΠ±Ρ‚Π°Π»ΡŒΠ½ΠΈΠΉ Ρ‡ΠΈ Ρ–Π΄Π΅Π°Π»ΡŒΠ½ΠΈΠΉ Π²Ρ–Π½ ΠΌΠ°Π² Π±ΠΈ процСсі Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Тиття Π·Π°Π·Π½Π°Ρ‚ΠΈ ΠΏΠ΅Π²Π½ΠΈΡ… ΠΊΠΎΡ€ΠΈΠ³ΡƒΠ²Π°Π½ΡŒ Π½Ρƒ Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊΠΎΠΌ Ρ‚Π΅Ρ€ΠΈΡ€Ρ–Π°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ Π² часі Π½Π° Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎΡ— ситуації Ρ” Π³ΠΎΠ»ΠΎΠ²Π° обласної адміністрації Ρ‚Π°ΠΊ Π° ΠΏΠΎ місту Π»ΡŽΠ±ΠΎΠ²ΠΎΠ½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊΠΎΠΌ Ρ” ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈΠΊ Ρ€Π°ΠΉΠΎΠ½Π½ΠΎΡ— адміністрації Ρ†Π΅ Ρ” Π½Π΅Π²Π΅Π»ΠΈΠΊΠΈΠΉ офіс Π½Π΅Ρ…Π΅Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠ° ΠΏΡ€Π°Ρ†Ρ–Π²Π½ΠΈΠΊΡ–Π² Ρ– Π²ΠΎΠ½ΠΈ ΠΌΠ°Π»ΠΈ Π±ΠΈ стояти Π½Π°Π΄ Π³Ρ€ΠΎΠΌΠ°Π΄ΠΎΡŽ міста львова я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ Ρ‰ΠΎ Ρ†Π΅ Π±ΡƒΠ΄Π΅ ΠΌΠ°Ρ‚ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŽ якісний Π΅Ρ„Π΅ΠΊΡ‚ Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ” кСрівникобласті ΠΊΠ΅Ρ€Ρ–Π²Π½ΠΈ мста Π°Π»Π΅ Ρ†Ρ– Ρ€Π΅Ρ‡Ρ– Π½Π°ΠΏΠ΅Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈ писали Π·Π°ΠΊΠΎΠ½ Π½Π΅ Π΄ΠΎ кінця Ρ€Π°Ρ…ΠΎΠ²ΡƒΠ²Π°Π»ΠΈ Π°Π»Π΅ ΠΌΠΈ ΠΌΠ°Ρ”ΠΌΠΎ час Ρ‰ΠΎΠ± Ρ†Π΅ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ Π°Π»Π΅ Π½Π° ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ– ΠΌΠΈ Ρ‡Ρ–Ρ‚ΠΊΠΎ Π²ΠΈΠΊΠΎΠ½ΠΈΠΎΠ·Π°ΠΊΠ½ΠΈ який Ρ” Ρ–Π½ΡˆΡ…Π²Π°Ρ€ΡΠ½Ρ‚Ρ–Π² Π½Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅ ΠΏΠ°Π½Π΅ Π°Π½Π΄Ρ€Ρ–ΡŽ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ остання запитння ваша Π±Ρ€ΠΈΠ³Π°Π΄Π° Π»ΡŒΠ²Ρ–Π²ΡΡŒΠΊΠ° Π½Ρƒ Π΄Π²Π° Π±Π°Ρ‚Π°Π»ΡŒΠΉΠΎΠ½ΠΈ як Π²ΠΈΠΊΡ€ΠΈΡ‚Π° як Π²ΠΎΠ½ΠΈ Π·Π°Ρ€Π°Π· ΠΎΠ·Π±Ρ€ΠΎΡ”Π½Ρ– ΠΏΠΎΠ²Π½Ρ–ΡΡ‚ΡŽ Ρ‡ΠΈ Π½Ρ–Ρ‡ Ρ†Π΅ Ρ‚Ρ–Π»ΡŒΠΊΠΈ ΡΡ‚Ρ€Ρ–Π»Π΅Ρ†ΡŒΠΊΠ΅ збря Ρ‡ΠΈ Ρ†Π΅ ΠΉ Π±Ρ–Π»ΡŒΡˆ Π²Π°ΠΆΠΊΠ΅ озброєння Ρ– як Π² ΡΡ‚Π°Π²ΠΈΡ‚ΠΈΡΡŒ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ Ρ‰ΠΎΠ± ΠΌΡ–ΡΡŒΠΊΠ΄Ρ–ΡΡ‚Ρ€Π°Ρ†Ρ–Ρ ΠΌΠ°Π»Π° ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒΠΊΠ°ΠΆΡ–ΠΌΠΎ Ρ‰ΠΎΡΡŒ ΠΊΡƒΠΏΡƒΠ²Π°Ρ‚ΠΈ для забзпСчСння самС си Ρ‚Ρ€Ρ‚Ρ–Π°Π»ΡŒΠΎΠΎΡ€ΠΎΠ½ΠΈ Π½Ρƒ Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Ρ‚Ρ– ΠΆ самі бСспілотники для Ρ€ΠΎΠ·Π²Ρ–Π΄ΠΊΠΈ Π°Π±ΠΎ засоби звязку Π° Π°Π±ΠΎ ось Ρ‰ΠΎΡΡŒ Ρ‚Π°ΠΊΠ΅ Π½Ρƒ Ρ‰ΠΎΠ± Π²ΠΈ Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΈ ΠΌΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ Π±Π°Π³Π°Ρ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ”ΠΌΠΎ всім нашим Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²ΠΈΠΌ частинам Π±Π°Ρ‚Π°Π»ΡŒΠΎΠ½Π°ΠΌ Ρ†Π΅ Ρ€ΠΎΠ±ΠΈΠ»ΠΈ читСрастобу ΠΏΠΈΡ‚Π°Ρ‚ΠΈΠΌΡƒ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠΊΡƒ якщо Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΏΡ€ΠΎ сили Ρ‚Π΅Ρ€ΠΈΡ‚ΠΎΡ€Ρ–Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΎΡ€ΠΎΠ½ΠΈ області ΠΌΠΈ Π΄ΠΎΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌΠΎ усім Ρ‡ΠΈΠΌ Π±ΡƒΠ΄Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ ΠΌΠΎΠ²Π° ΠΏΡ€ΠΎ Π³Ρ€ΠΎΡˆΡ– Π½Π΅ ΠΉΠ΄Π΅ ΠΌΠΈ Π½Π΅ профінансуємо Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΡƒΡŽΡ‡ΠΈ Ρ–Π½ΡˆΠΎΡ— Π²ΡƒΠ»ΠΈΡ†Ρ– Π° нашим хлопцям Π΄ΠΎΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌΠΎ Ρ– Ρ†Π΅ ΠΌΠ°Ρ” Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ ΠΊΠΎΠ½Π° Π³Ρ€ΠΎΠΌΠ°Π΄Π° Ρ– ΠΊΠΎΠΆΠ΅Π½ Π»Ρ–Π΄Π΅Ρ€ Π³ΠΎΠΌΠ°Π΄ΠΈ Π² Π½Π°ΡˆΡ–ΠΉ ΠΊΡ€Π°Ρ—Π½Ρ–
112
- ```
113
-
114
- ### Inference of `mer_lviv_interview.wav` (time is 06:38)
115
-
116
- #### CPU
117
-
118
- - Memory peaks to 60GB
119
- - Memory peaks to 65GB (on News LM)
120
-
121
- Inference duration:
122
-
123
- ```
124
- real 7m39.461s
125
- user 59m19.065s
126
- sys 24m1.254s
127
- ```
128
-
129
- Inference duration (on News LM):
130
-
131
- ```
132
- real 12m36.888s
133
- user 63m19.396s
134
- sys 24m24.823s
135
- ```
136
-
137
- Duration tracked with loading the LM.
138
-
139
- ## Using timestamps
140
-
141
- The `inference_timestamps.py` script can be used to do inference with timestamps for chars and words.
142
-
143
- ### `output_char_offsets=True`
144
-
145
- ```
146
- Wav2Vec2CTCTokenizerOutput(text='паня сполучСні ΡˆΡ‚Π°Ρ‚ΠΈ Π½Π°Π΄Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ стратСгічний ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ ΠΎΠ΄Π½Π°ΠΊ Ρ” різниця ΡˆΡ‚Π°Ρ‚ΠΈ ΠΌΠ°ΡŽΡ‚ΡŒ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈ Π·Π°ΠΊΠΎΠ½ який ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π°Ρ” якщо ΠΊΠΈΡ‚Π°ΠΉ Π½Π°ΠΏΠ°Π΄Π΅ Π½Π° Ρ‚Π°ΠΉΠ²Π°Π½ΡŒ Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½ΡΡŒΠΊΠΈΠΉ Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²Ρ– ΠΌΠ°ΡŽΡ‚ΡŒ ΠΉΠΎΠ³ΠΎ Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Π΅Π²ΡƒΠΉΠ²Π³Π΅Ρ€Π΅', char_offsets=[{'char': 'ΠΏ', 'start_offset': 0, 'end_offset': 1}, {'char': 'Π°', 'start_offset': 1, 'end_offset': 2}, {'char': 'Π½', 'start_offset': 9, 'end_offset': 10}, {'char': 'я', 'start_offset': 11, 'end_offset': 12}, {'char': ' ', 'start_offset': 14, 'end_offset': 15}, {'char': 'с', 'start_offset': 16, 'end_offset': 17}, {'char': 'ΠΏ', 'start_offset': 19, 'end_offset': 20}, {'char': 'ΠΎ', 'start_offset': 21, 'end_offset': 22}, {'char': 'Π»', 'start_offset': 23, 'end_offset': 24}, {'char': 'Ρƒ', 'start_offset': 25, 'end_offset': 26}, {'char': 'Ρ‡', 'start_offset': 30, 'end_offset': 31}, {'char': 'Π΅', 'start_offset': 32, 'end_offset': 33}, {'char': 'Π½', 'start_offset': 37, 'end_offset': 38}, {'char': 'Ρ–', 'start_offset': 38, 'end_offset': 39}, {'char': ' ', 'start_offset': 40, 'end_offset': 42}, {'char': 'ш', 'start_offset': 43, 'end_offset': 44}, {'char': 'Ρ‚', 'start_offset': 46, 'end_offset': 47}, {'char': 'Π°', 'start_offset': 48, 'end_offset': 49}, {'char': 'Ρ‚', 'start_offset': 57, 'end_offset': 58}, {'char': 'ΠΈ', 'start_offset': 58, 'end_offset': 59}, {'char': ' ', 'start_offset': 76, 'end_offset': 79}, {'char': 'Π½', 'start_offset': 85, 'end_offset': 86}, {'char': 'Π°', 'start_offset': 87, 'end_offset': 88}, {'char': 'Π΄', 'start_offset': 93, 'end_offset': 94}, {'char': 'Π²', 'start_offset': 97, 'end_offset': 98}, {'char': 'Π°', 'start_offset': 99, 'end_offset': 100}, {'char': 'ΠΆ', 'start_offset': 105, 'end_offset': 106}, {'char': 'Π»', 'start_offset': 113, 'end_offset': 114}, {'char': 'ΠΈ', 'start_offset': 114, 'end_offset': 115}, {'char': 'Π²', 'start_offset': 121, 'end_offset': 122}, {'char': 'ΠΈ', 'start_offset': 123, 'end_offset': 124}, {'char': 'ΠΉ', 'start_offset': 125, 'end_offset': 126}, {'char': ' ', 'start_offset': 127, 'end_offset': 129}, {'char': 'с', 'start_offset': 130, 'end_offset': 131}, {'char': 'Ρ‚', 'start_offset': 134, 'end_offset': 136}, {'char': 'Ρ€', 'start_offset': 138, 'end_offset': 139}, {'char': 'Π°', 'start_offset': 139, 'end_offset': 140}, {'char': 'Ρ‚', 'start_offset': 145, 'end_offset': 146}, {'char': 'Π΅', 'start_offset': 146, 'end_offset': 147}, {'char': 'Π³', 'start_offset': 152, 'end_offset': 153}, {'char': 'Ρ–', 'start_offset': 153, 'end_offset': 154}, {'char': 'Ρ‡', 'start_offset': 160, 'end_offset': 161}, {'char': 'Π½', 'start_offset': 167, 'end_offset': 168}, {'char': 'ΠΈ', 'start_offset': 168, 'end_offset': 169}, {'char': 'ΠΉ', 'start_offset': 170, 'end_offset': 171}, {'char': ' ', 'start_offset': 171, 'end_offset': 173}, {'char': 'ΠΏ', 'start_offset': 174, 'end_offset': 175}, {'char': 'Π°', 'start_offset': 176, 'end_offset': 177}, {'char': 'Ρ€', 'start_offset': 179, 'end_offset': 180}, {'char': 'Ρ‚', 'start_offset': 183, 'end_offset': 184}, {'char': 'Π½', 'start_offset': 188, 'end_offset': 189}, {'char': 'Π΅', 'start_offset': 189, 'end_offset': 190}, {'char': 'Ρ€', 'start_offset': 193, 'end_offset': 194}, {'char': ' ', 'start_offset': 201, 'end_offset': 203}, {'char': 'ΠΎ', 'start_offset': 204, 'end_offset': 205}, {'char': 'Π΄', 'start_offset': 208, 'end_offset': 209}, {'char': 'Π½', 'start_offset': 214, 'end_offset': 216}, {'char': 'Π°', 'start_offset': 216, 'end_offset': 217}, {'char': 'ΠΊ', 'start_offset': 224, 'end_offset': 225}, {'char': ' ', 'start_offset': 227, 'end_offset': 229}, {'char': 'Ρ”', 'start_offset': 233, 'end_offset': 234}, {'char': ' ', 'start_offset': 237, 'end_offset': 239}, {'char': 'Ρ€', 'start_offset': 240, 'end_offset': 241}, {'char': 'Ρ–', 'start_offset': 241, 'end_offset': 242}, {'char': 'Π·', 'start_offset': 247, 'end_offset': 248}, {'char': 'Π½', 'start_offset': 253, 'end_offset': 254}, {'char': 'ΠΈ', 'start_offset': 254, 'end_offset': 255}, {'char': 'Ρ†', 'start_offset': 261, 'end_offset': 262}, {'char': 'я', 'start_offset': 262, 'end_offset': 263}, {'char': ' ', 'start_offset': 281, 'end_offset': 283}, {'char': 'ш', 'start_offset': 283, 'end_offset': 284}, {'char': 'Ρ‚', 'start_offset': 286, 'end_offset': 287}, {'char': 'Π°', 'start_offset': 288, 'end_offset': 289}, {'char': 'Ρ‚', 'start_offset': 294, 'end_offset': 295}, {'char': 'ΠΈ', 'start_offset': 296, 'end_offset': 297}, {'char': ' ', 'start_offset': 297, 'end_offset': 299}, {'char': 'ΠΌ', 'start_offset': 300, 'end_offset': 301}, {'char': 'Π°', 'start_offset': 301, 'end_offset': 302}, {'char': 'ю', 'start_offset': 306, 'end_offset': 307}, {'char': 'Ρ‚', 'start_offset': 308, 'end_offset': 309}, {'char': 'ь', 'start_offset': 309, 'end_offset': 311}, {'char': ' ', 'start_offset': 311, 'end_offset': 313}, {'char': 'с', 'start_offset': 313, 'end_offset': 314}, {'char': 'ΠΏ', 'start_offset': 316, 'end_offset': 317}, {'char': 'Π΅', 'start_offset': 318, 'end_offset': 319}, {'char': 'Ρ†', 'start_offset': 324, 'end_offset': 325}, {'char': 'Ρ–', 'start_offset': 325, 'end_offset': 326}, {'char': 'Π°', 'start_offset': 328, 'end_offset': 329}, {'char': 'Π»', 'start_offset': 333, 'end_offset': 334}, {'char': 'ь', 'start_offset': 334, 'end_offset': 336}, {'char': 'Π½', 'start_offset': 339, 'end_offset': 340}, {'char': 'ΠΈ', 'start_offset': 341, 'end_offset': 342}, {'char': ' ', 'start_offset': 345, 'end_offset': 348}, {'char': 'Π·', 'start_offset': 351, 'end_offset': 352}, {'char': 'Π°', 'start_offset': 354, 'end_offset': 355}, {'char': 'ΠΊ', 'start_offset': 361, 'end_offset': 362}, {'char': 'ΠΎ', 'start_offset': 365, 'end_offset': 366}, {'char': 'Π½', 'start_offset': 373, 'end_offset': 374}, {'char': ' ', 'start_offset': 382, 'end_offset': 384}, {'char': 'я', 'start_offset': 386, 'end_offset': 387}, {'char': 'ΠΊ', 'start_offset': 390, 'end_offset': 391}, {'char': 'ΠΈ', 'start_offset': 392, 'end_offset': 393}, {'char': 'ΠΉ', 'start_offset': 394, 'end_offset': 395}, {'char': ' ', 'start_offset': 396, 'end_offset': 398}, {'char': 'ΠΏ', 'start_offset': 399, 'end_offset': 401}, {'char': 'Π΅', 'start_offset': 402, 'end_offset': 403}, {'char': 'Ρ€', 'start_offset': 406, 'end_offset': 407}, {'char': 'Π΅', 'start_offset': 407, 'end_offset': 408}, {'char': 'Π΄', 'start_offset': 411, 'end_offset': 412}, {'char': 'Π±', 'start_offset': 415, 'end_offset': 416}, {'char': 'Π°', 'start_offset': 416, 'end_offset': 417}, {'char': 'Ρ‡', 'start_offset': 424, 'end_offset': 425}, {'char': 'Π°', 'start_offset': 428, 'end_offset': 429}, {'char': 'Ρ”', 'start_offset': 437, 'end_offset': 438}, {'char': ' ', 'start_offset': 445, 'end_offset': 447}, {'char': 'я', 'start_offset': 448, 'end_offset': 449}, {'char': 'ΠΊ', 'start_offset': 452, 'end_offset': 453}, {'char': 'Ρ‰', 'start_offset': 455, 'end_offset': 456}, {'char': 'ΠΎ', 'start_offset': 457, 'end_offset': 458}, {'char': ' ', 'start_offset': 460, 'end_offset': 463}, {'char': 'ΠΊ', 'start_offset': 463, 'end_offset': 464}, {'char': 'ΠΈ', 'start_offset': 465, 'end_offset': 466}, {'char': 'Ρ‚', 'start_offset': 470, 'end_offset': 471}, {'char': 'Π°', 'start_offset': 472, 'end_offset': 473}, {'char': 'ΠΉ', 'start_offset': 478, 'end_offset': 480}, {'char': ' ', 'start_offset': 484, 'end_offset': 486}, {'char': 'Π½', 'start_offset': 487, 'end_offset': 488}, {'char': 'Π°', 'start_offset': 488, 'end_offset': 489}, {'char': 'ΠΏ', 'start_offset': 493, 'end_offset': 494}, {'char': 'Π°', 'start_offset': 496, 'end_offset': 497}, {'char': 'Π΄', 'start_offset': 502, 'end_offset': 503}, {'char': 'Π΅', 'start_offset': 504, 'end_offset': 505}, {'char': ' ', 'start_offset': 509, 'end_offset': 511}, {'char': 'Π½', 'start_offset': 511, 'end_offset': 512}, {'char': 'Π°', 'start_offset': 513, 'end_offset': 514}, {'char': ' ', 'start_offset': 515, 'end_offset': 517}, {'char': 'Ρ‚', 'start_offset': 518, 'end_offset': 519}, {'char': 'Π°', 'start_offset': 519, 'end_offset': 520}, {'char': 'ΠΉ', 'start_offset': 524, 'end_offset': 525}, {'char': 'Π²', 'start_offset': 527, 'end_offset': 528}, {'char': 'Π°', 'start_offset': 529, 'end_offset': 530}, {'char': 'Π½', 'start_offset': 535, 'end_offset': 536}, {'char': 'ь', 'start_offset': 536, 'end_offset': 537}, {'char': ' ', 'start_offset': 552, 'end_offset': 555}, {'char': 'Π°', 'start_offset': 555, 'end_offset': 556}, {'char': 'ΠΌ', 'start_offset': 561, 'end_offset': 562}, {'char': 'Π΅', 'start_offset': 562, 'end_offset': 563}, {'char': 'Ρ€', 'start_offset': 566, 'end_offset': 567}, {'char': 'ΠΈ', 'start_offset': 567, 'end_offset': 568}, {'char': 'ΠΊ', 'start_offset': 572, 'end_offset': 573}, {'char': 'Π°', 'start_offset': 574, 'end_offset': 575}, {'char': 'Π½', 'start_offset': 579, 'end_offset': 580}, {'char': 'с', 'start_offset': 582, 'end_offset': 583}, {'char': 'ь', 'start_offset': 583, 'end_offset': 585}, {'char': 'ΠΊ', 'start_offset': 586, 'end_offset': 587}, {'char': 'ΠΈ', 'start_offset': 588, 'end_offset': 589}, {'char': 'ΠΉ', 'start_offset': 589, 'end_offset': 590}, {'char': ' ', 'start_offset': 591, 'end_offset': 593}, {'char': 'Π²', 'start_offset': 594, 'end_offset': 595}, {'char': 'Ρ–', 'start_offset': 595, 'end_offset': 596}, {'char': 'ΠΉ', 'start_offset': 600, 'end_offset': 601}, {'char': 'с', 'start_offset': 604, 'end_offset': 605}, {'char': 'ь', 'start_offset': 605, 'end_offset': 607}, {'char': 'ΠΊ', 'start_offset': 609, 'end_offset': 611}, {'char': 'ΠΎ', 'start_offset': 612, 'end_offset': 613}, {'char': 'Π²', 'start_offset': 620, 'end_offset': 621}, {'char': 'Ρ–', 'start_offset': 622, 'end_offset': 623}, {'char': ' ', 'start_offset': 637, 'end_offset': 639}, {'char': 'ΠΌ', 'start_offset': 641, 'end_offset': 642}, {'char': 'Π°', 'start_offset': 643, 'end_offset': 644}, {'char': 'ю', 'start_offset': 651, 'end_offset': 652}, {'char': 'Ρ‚', 'start_offset': 654, 'end_offset': 655}, {'char': 'ь', 'start_offset': 655, 'end_offset': 656}, {'char': ' ', 'start_offset': 657, 'end_offset': 659}, {'char': 'ΠΉ', 'start_offset': 659, 'end_offset': 660}, {'char': 'ΠΎ', 'start_offset': 660, 'end_offset': 662}, {'char': 'Π³', 'start_offset': 664, 'end_offset': 665}, {'char': 'ΠΎ', 'start_offset': 666, 'end_offset': 667}, {'char': ' ', 'start_offset': 677, 'end_offset': 679}, {'char': 'Π·', 'start_offset': 681, 'end_offset': 682}, {'char': 'Π°', 'start_offset': 683, 'end_offset': 684}, {'char': 'Ρ…', 'start_offset': 686, 'end_offset': 687}, {'char': 'ΠΈ', 'start_offset': 689, 'end_offset': 690}, {'char': 'Ρ‰', 'start_offset': 696, 'end_offset': 697}, {'char': 'Π°', 'start_offset': 698, 'end_offset': 699}, {'char': 'Ρ‚', 'start_offset': 707, 'end_offset': 708}, {'char': 'ΠΈ', 'start_offset': 709, 'end_offset': 710}, {'char': ' ', 'start_offset': 733, 'end_offset': 734}, {'char': 'Π΅', 'start_offset': 740, 'end_offset': 741}, {'char': 'Π²', 'start_offset': 747, 'end_offset': 748}, {'char': 'Ρƒ', 'start_offset': 748, 'end_offset': 749}, {'char': 'ΠΉ', 'start_offset': 752, 'end_offset': 753}, {'char': 'Π²', 'start_offset': 754, 'end_offset': 755}, {'char': 'Π³', 'start_offset': 757, 'end_offset': 758}, {'char': 'Π΅', 'start_offset': 759, 'end_offset': 760}, {'char': 'Ρ€', 'start_offset': 767, 'end_offset': 768}, {'char': 'Π΅', 'start_offset': 768, 'end_offset': 769}], word_offsets=None)
147
- ```
148
-
149
- ### `output_word_offsets=True`
150
-
151
- ```
152
- Wav2Vec2CTCTokenizerOutput(text='паня сполучСні ΡˆΡ‚Π°Ρ‚ΠΈ Π½Π°Π΄Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ стратСгічний ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ ΠΎΠ΄Π½Π°ΠΊ Ρ” різниця ΡˆΡ‚Π°Ρ‚ΠΈ ΠΌΠ°ΡŽΡ‚ΡŒ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈ Π·Π°ΠΊΠΎΠ½ який ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π°Ρ” якщо ΠΊΠΈΡ‚Π°ΠΉ Π½Π°ΠΏΠ°Π΄Π΅ Π½οΏ½οΏ½ Ρ‚Π°ΠΉΠ²Π°Π½ΡŒ Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½ΡΡŒΠΊΠΈΠΉ Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²Ρ– ΠΌΠ°ΡŽΡ‚ΡŒ ΠΉΠΎΠ³ΠΎ Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ Π΅Π²ΡƒΠΉΠ²Π³Π΅Ρ€Π΅', char_offsets=[{'char': 'ΠΏ', 'start_offset': 0, 'end_offset': 1}, {'char': 'Π°', 'start_offset': 1, 'end_offset': 2}, {'char': 'Π½', 'start_offset': 9, 'end_offset': 10}, {'char': 'я', 'start_offset': 11, 'end_offset': 12}, {'char': ' ', 'start_offset': 14, 'end_offset': 15}, {'char': 'с', 'start_offset': 16, 'end_offset': 17}, {'char': 'ΠΏ', 'start_offset': 19, 'end_offset': 20}, {'char': 'ΠΎ', 'start_offset': 21, 'end_offset': 22}, {'char': 'Π»', 'start_offset': 23, 'end_offset': 24}, {'char': 'Ρƒ', 'start_offset': 25, 'end_offset': 26}, {'char': 'Ρ‡', 'start_offset': 30, 'end_offset': 31}, {'char': 'Π΅', 'start_offset': 32, 'end_offset': 33}, {'char': 'Π½', 'start_offset': 37, 'end_offset': 38}, {'char': 'Ρ–', 'start_offset': 38, 'end_offset': 39}, {'char': ' ', 'start_offset': 40, 'end_offset': 42}, {'char': 'ш', 'start_offset': 43, 'end_offset': 44}, {'char': 'Ρ‚', 'start_offset': 46, 'end_offset': 47}, {'char': 'Π°', 'start_offset': 48, 'end_offset': 49}, {'char': 'Ρ‚', 'start_offset': 57, 'end_offset': 58}, {'char': 'ΠΈ', 'start_offset': 58, 'end_offset': 59}, {'char': ' ', 'start_offset': 76, 'end_offset': 79}, {'char': 'Π½', 'start_offset': 85, 'end_offset': 86}, {'char': 'Π°', 'start_offset': 87, 'end_offset': 88}, {'char': 'Π΄', 'start_offset': 93, 'end_offset': 94}, {'char': 'Π²', 'start_offset': 97, 'end_offset': 98}, {'char': 'Π°', 'start_offset': 99, 'end_offset': 100}, {'char': 'ΠΆ', 'start_offset': 105, 'end_offset': 106}, {'char': 'Π»', 'start_offset': 113, 'end_offset': 114}, {'char': 'ΠΈ', 'start_offset': 114, 'end_offset': 115}, {'char': 'Π²', 'start_offset': 121, 'end_offset': 122}, {'char': 'ΠΈ', 'start_offset': 123, 'end_offset': 124}, {'char': 'ΠΉ', 'start_offset': 125, 'end_offset': 126}, {'char': ' ', 'start_offset': 127, 'end_offset': 129}, {'char': 'с', 'start_offset': 130, 'end_offset': 131}, {'char': 'Ρ‚', 'start_offset': 134, 'end_offset': 136}, {'char': 'Ρ€', 'start_offset': 138, 'end_offset': 139}, {'char': 'Π°', 'start_offset': 139, 'end_offset': 140}, {'char': 'Ρ‚', 'start_offset': 145, 'end_offset': 146}, {'char': 'Π΅', 'start_offset': 146, 'end_offset': 147}, {'char': 'Π³', 'start_offset': 152, 'end_offset': 153}, {'char': 'Ρ–', 'start_offset': 153, 'end_offset': 154}, {'char': 'Ρ‡', 'start_offset': 160, 'end_offset': 161}, {'char': 'Π½', 'start_offset': 167, 'end_offset': 168}, {'char': 'ΠΈ', 'start_offset': 168, 'end_offset': 169}, {'char': 'ΠΉ', 'start_offset': 170, 'end_offset': 171}, {'char': ' ', 'start_offset': 171, 'end_offset': 173}, {'char': 'ΠΏ', 'start_offset': 174, 'end_offset': 175}, {'char': 'Π°', 'start_offset': 176, 'end_offset': 177}, {'char': 'Ρ€', 'start_offset': 179, 'end_offset': 180}, {'char': 'Ρ‚', 'start_offset': 183, 'end_offset': 184}, {'char': 'Π½', 'start_offset': 188, 'end_offset': 189}, {'char': 'Π΅', 'start_offset': 189, 'end_offset': 190}, {'char': 'Ρ€', 'start_offset': 193, 'end_offset': 194}, {'char': ' ', 'start_offset': 201, 'end_offset': 203}, {'char': 'ΠΎ', 'start_offset': 204, 'end_offset': 205}, {'char': 'Π΄', 'start_offset': 208, 'end_offset': 209}, {'char': 'Π½', 'start_offset': 214, 'end_offset': 216}, {'char': 'Π°', 'start_offset': 216, 'end_offset': 217}, {'char': 'ΠΊ', 'start_offset': 224, 'end_offset': 225}, {'char': ' ', 'start_offset': 227, 'end_offset': 229}, {'char': 'Ρ”', 'start_offset': 233, 'end_offset': 234}, {'char': ' ', 'start_offset': 237, 'end_offset': 239}, {'char': 'Ρ€', 'start_offset': 240, 'end_offset': 241}, {'char': 'Ρ–', 'start_offset': 241, 'end_offset': 242}, {'char': 'Π·', 'start_offset': 247, 'end_offset': 248}, {'char': 'Π½', 'start_offset': 253, 'end_offset': 254}, {'char': 'ΠΈ', 'start_offset': 254, 'end_offset': 255}, {'char': 'Ρ†', 'start_offset': 261, 'end_offset': 262}, {'char': 'я', 'start_offset': 262, 'end_offset': 263}, {'char': ' ', 'start_offset': 281, 'end_offset': 283}, {'char': 'ш', 'start_offset': 283, 'end_offset': 284}, {'char': 'Ρ‚', 'start_offset': 286, 'end_offset': 287}, {'char': 'Π°', 'start_offset': 288, 'end_offset': 289}, {'char': 'Ρ‚', 'start_offset': 294, 'end_offset': 295}, {'char': 'ΠΈ', 'start_offset': 296, 'end_offset': 297}, {'char': ' ', 'start_offset': 297, 'end_offset': 299}, {'char': 'ΠΌ', 'start_offset': 300, 'end_offset': 301}, {'char': 'Π°', 'start_offset': 301, 'end_offset': 302}, {'char': 'ю', 'start_offset': 306, 'end_offset': 307}, {'char': 'Ρ‚', 'start_offset': 308, 'end_offset': 309}, {'char': 'ь', 'start_offset': 309, 'end_offset': 311}, {'char': ' ', 'start_offset': 311, 'end_offset': 313}, {'char': 'с', 'start_offset': 313, 'end_offset': 314}, {'char': 'ΠΏ', 'start_offset': 316, 'end_offset': 317}, {'char': 'Π΅', 'start_offset': 318, 'end_offset': 319}, {'char': 'Ρ†', 'start_offset': 324, 'end_offset': 325}, {'char': 'Ρ–', 'start_offset': 325, 'end_offset': 326}, {'char': 'Π°', 'start_offset': 328, 'end_offset': 329}, {'char': 'Π»', 'start_offset': 333, 'end_offset': 334}, {'char': 'ь', 'start_offset': 334, 'end_offset': 336}, {'char': 'Π½', 'start_offset': 339, 'end_offset': 340}, {'char': 'ΠΈ', 'start_offset': 341, 'end_offset': 342}, {'char': ' ', 'start_offset': 345, 'end_offset': 348}, {'char': 'Π·', 'start_offset': 351, 'end_offset': 352}, {'char': 'Π°', 'start_offset': 354, 'end_offset': 355}, {'char': 'ΠΊ', 'start_offset': 361, 'end_offset': 362}, {'char': 'ΠΎ', 'start_offset': 365, 'end_offset': 366}, {'char': 'Π½', 'start_offset': 373, 'end_offset': 374}, {'char': ' ', 'start_offset': 382, 'end_offset': 384}, {'char': 'я', 'start_offset': 386, 'end_offset': 387}, {'char': 'ΠΊ', 'start_offset': 390, 'end_offset': 391}, {'char': 'ΠΈ', 'start_offset': 392, 'end_offset': 393}, {'char': 'ΠΉ', 'start_offset': 394, 'end_offset': 395}, {'char': ' ', 'start_offset': 396, 'end_offset': 398}, {'char': 'ΠΏ', 'start_offset': 399, 'end_offset': 401}, {'char': 'Π΅', 'start_offset': 402, 'end_offset': 403}, {'char': 'Ρ€', 'start_offset': 406, 'end_offset': 407}, {'char': 'Π΅', 'start_offset': 407, 'end_offset': 408}, {'char': 'Π΄', 'start_offset': 411, 'end_offset': 412}, {'char': 'Π±', 'start_offset': 415, 'end_offset': 416}, {'char': 'Π°', 'start_offset': 416, 'end_offset': 417}, {'char': 'Ρ‡', 'start_offset': 424, 'end_offset': 425}, {'char': 'Π°', 'start_offset': 428, 'end_offset': 429}, {'char': 'Ρ”', 'start_offset': 437, 'end_offset': 438}, {'char': ' ', 'start_offset': 445, 'end_offset': 447}, {'char': 'я', 'start_offset': 448, 'end_offset': 449}, {'char': 'ΠΊ', 'start_offset': 452, 'end_offset': 453}, {'char': 'Ρ‰', 'start_offset': 455, 'end_offset': 456}, {'char': 'ΠΎ', 'start_offset': 457, 'end_offset': 458}, {'char': ' ', 'start_offset': 460, 'end_offset': 463}, {'char': 'ΠΊ', 'start_offset': 463, 'end_offset': 464}, {'char': 'ΠΈ', 'start_offset': 465, 'end_offset': 466}, {'char': 'Ρ‚', 'start_offset': 470, 'end_offset': 471}, {'char': 'Π°', 'start_offset': 472, 'end_offset': 473}, {'char': 'ΠΉ', 'start_offset': 478, 'end_offset': 480}, {'char': ' ', 'start_offset': 484, 'end_offset': 486}, {'char': 'Π½', 'start_offset': 487, 'end_offset': 488}, {'char': 'Π°', 'start_offset': 488, 'end_offset': 489}, {'char': 'ΠΏ', 'start_offset': 493, 'end_offset': 494}, {'char': 'Π°', 'start_offset': 496, 'end_offset': 497}, {'char': 'Π΄', 'start_offset': 502, 'end_offset': 503}, {'char': 'Π΅', 'start_offset': 504, 'end_offset': 505}, {'char': ' ', 'start_offset': 509, 'end_offset': 511}, {'char': 'Π½', 'start_offset': 511, 'end_offset': 512}, {'char': 'Π°', 'start_offset': 513, 'end_offset': 514}, {'char': ' ', 'start_offset': 515, 'end_offset': 517}, {'char': 'Ρ‚', 'start_offset': 518, 'end_offset': 519}, {'char': 'Π°', 'start_offset': 519, 'end_offset': 520}, {'char': 'ΠΉ', 'start_offset': 524, 'end_offset': 525}, {'char': 'Π²', 'start_offset': 527, 'end_offset': 528}, {'char': 'Π°', 'start_offset': 529, 'end_offset': 530}, {'char': 'Π½', 'start_offset': 535, 'end_offset': 536}, {'char': 'ь', 'start_offset': 536, 'end_offset': 537}, {'char': ' ', 'start_offset': 552, 'end_offset': 555}, {'char': 'Π°', 'start_offset': 555, 'end_offset': 556}, {'char': 'ΠΌ', 'start_offset': 561, 'end_offset': 562}, {'char': 'Π΅', 'start_offset': 562, 'end_offset': 563}, {'char': 'Ρ€', 'start_offset': 566, 'end_offset': 567}, {'char': 'ΠΈ', 'start_offset': 567, 'end_offset': 568}, {'char': 'ΠΊ', 'start_offset': 572, 'end_offset': 573}, {'char': 'Π°', 'start_offset': 574, 'end_offset': 575}, {'char': 'Π½', 'start_offset': 579, 'end_offset': 580}, {'char': 'с', 'start_offset': 582, 'end_offset': 583}, {'char': 'ь', 'start_offset': 583, 'end_offset': 585}, {'char': 'ΠΊ', 'start_offset': 586, 'end_offset': 587}, {'char': 'ΠΈ', 'start_offset': 588, 'end_offset': 589}, {'char': 'ΠΉ', 'start_offset': 589, 'end_offset': 590}, {'char': ' ', 'start_offset': 591, 'end_offset': 593}, {'char': 'Π²', 'start_offset': 594, 'end_offset': 595}, {'char': 'Ρ–', 'start_offset': 595, 'end_offset': 596}, {'char': 'ΠΉ', 'start_offset': 600, 'end_offset': 601}, {'char': 'с', 'start_offset': 604, 'end_offset': 605}, {'char': 'ь', 'start_offset': 605, 'end_offset': 607}, {'char': 'ΠΊ', 'start_offset': 609, 'end_offset': 611}, {'char': 'ΠΎ', 'start_offset': 612, 'end_offset': 613}, {'char': 'Π²', 'start_offset': 620, 'end_offset': 621}, {'char': 'Ρ–', 'start_offset': 622, 'end_offset': 623}, {'char': ' ', 'start_offset': 637, 'end_offset': 639}, {'char': 'ΠΌ', 'start_offset': 641, 'end_offset': 642}, {'char': 'Π°', 'start_offset': 643, 'end_offset': 644}, {'char': 'ю', 'start_offset': 651, 'end_offset': 652}, {'char': 'Ρ‚', 'start_offset': 654, 'end_offset': 655}, {'char': 'ь', 'start_offset': 655, 'end_offset': 656}, {'char': ' ', 'start_offset': 657, 'end_offset': 659}, {'char': 'ΠΉ', 'start_offset': 659, 'end_offset': 660}, {'char': 'ΠΎ', 'start_offset': 660, 'end_offset': 662}, {'char': 'Π³', 'start_offset': 664, 'end_offset': 665}, {'char': 'ΠΎ', 'start_offset': 666, 'end_offset': 667}, {'char': ' ', 'start_offset': 677, 'end_offset': 679}, {'char': 'Π·', 'start_offset': 681, 'end_offset': 682}, {'char': 'Π°', 'start_offset': 683, 'end_offset': 684}, {'char': 'Ρ…', 'start_offset': 686, 'end_offset': 687}, {'char': 'ΠΈ', 'start_offset': 689, 'end_offset': 690}, {'char': 'Ρ‰', 'start_offset': 696, 'end_offset': 697}, {'char': 'Π°', 'start_offset': 698, 'end_offset': 699}, {'char': 'Ρ‚', 'start_offset': 707, 'end_offset': 708}, {'char': 'ΠΈ', 'start_offset': 709, 'end_offset': 710}, {'char': ' ', 'start_offset': 733, 'end_offset': 734}, {'char': 'Π΅', 'start_offset': 740, 'end_offset': 741}, {'char': 'Π²', 'start_offset': 747, 'end_offset': 748}, {'char': 'Ρƒ', 'start_offset': 748, 'end_offset': 749}, {'char': 'ΠΉ', 'start_offset': 752, 'end_offset': 753}, {'char': 'Π²', 'start_offset': 754, 'end_offset': 755}, {'char': 'Π³', 'start_offset': 757, 'end_offset': 758}, {'char': 'Π΅', 'start_offset': 759, 'end_offset': 760}, {'char': 'Ρ€', 'start_offset': 767, 'end_offset': 768}, {'char': 'Π΅', 'start_offset': 768, 'end_offset': 769}], word_offsets=[{'word': 'паня', 'start_offset': 0, 'end_offset': 12}, {'word': 'сполучСні', 'start_offset': 16, 'end_offset': 39}, {'word': 'ΡˆΡ‚Π°Ρ‚ΠΈ', 'start_offset': 43, 'end_offset': 59}, {'word': 'Π½Π°Π΄Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ', 'start_offset': 85, 'end_offset': 126}, {'word': 'стратСгічний', 'start_offset': 130, 'end_offset': 171}, {'word': 'ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€', 'start_offset': 174, 'end_offset': 194}, {'word': 'ΠΎΠ΄Π½Π°ΠΊ', 'start_offset': 204, 'end_offset': 225}, {'word': 'Ρ”', 'start_offset': 233, 'end_offset': 234}, {'word': 'різниця', 'start_offset': 240, 'end_offset': 263}, {'word': 'ΡˆΡ‚Π°Ρ‚ΠΈ', 'start_offset': 283, 'end_offset': 297}, {'word': 'ΠΌΠ°ΡŽΡ‚ΡŒ', 'start_offset': 300, 'end_offset': 311}, {'word': 'ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈ', 'start_offset': 313, 'end_offset': 342}, {'word': 'Π·Π°ΠΊΠΎΠ½', 'start_offset': 351, 'end_offset': 374}, {'word': 'який', 'start_offset': 386, 'end_offset': 395}, {'word': 'ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π°Ρ”', 'start_offset': 399, 'end_offset': 438}, {'word': 'якщо', 'start_offset': 448, 'end_offset': 458}, {'word': 'ΠΊΠΈΡ‚Π°ΠΉ', 'start_offset': 463, 'end_offset': 480}, {'word': 'Π½Π°ΠΏΠ°Π΄Π΅', 'start_offset': 487, 'end_offset': 505}, {'word': 'Π½Π°', 'start_offset': 511, 'end_offset': 514}, {'word': 'Ρ‚Π°ΠΉΠ²Π°Π½ΡŒ', 'start_offset': 518, 'end_offset': 537}, {'word': 'Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½ΡΡŒΠΊΠΈΠΉ', 'start_offset': 555, 'end_offset': 590}, {'word': 'Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²Ρ–', 'start_offset': 594, 'end_offset': 623}, {'word': 'ΠΌΠ°ΡŽΡ‚ΡŒ', 'start_offset': 641, 'end_offset': 656}, {'word': 'ΠΉΠΎΠ³ΠΎ', 'start_offset': 659, 'end_offset': 667}, {'word': 'Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ', 'start_offset': 681, 'end_offset': 710}, {'word': 'Π΅Π²ΡƒΠΉΠ²Π³Π΅Ρ€Π΅', 'start_offset': 740, 'end_offset': 769}])
153
- ```
154
-
155
- ### Split by seconds
156
-
157
- ```
158
- 0.0 - 0.24: паня
159
- 0.32 - 0.78: сполучСні
160
- 0.86 - 1.18: ΡˆΡ‚Π°Ρ‚ΠΈ
161
- 1.7 - 2.52: Π½Π°Π΄Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΠΉ
162
- 2.6 - 3.42: стратСгічний
163
- 3.48 - 3.88: ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€
164
- 4.08 - 4.5: ΠΎΠ΄Π½Π°ΠΊ
165
- 4.66 - 4.68: Ρ”
166
- 4.8 - 5.26: різниця
167
- 5.66 - 5.94: ΡˆΡ‚Π°Ρ‚ΠΈ
168
- 6.0 - 6.22: ΠΌΠ°ΡŽΡ‚ΡŒ
169
- 6.26 - 6.84: ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈ
170
- 7.02 - 7.48: Π·Π°ΠΊΠΎΠ½
171
- 7.72 - 7.9: який
172
- 7.98 - 8.76: ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π°Ρ”
173
- 8.96 - 9.16: якщо
174
- 9.26 - 9.6: ΠΊΠΈΡ‚Π°ΠΉ
175
- 9.74 - 10.1: Π½Π°ΠΏΠ°Π΄Π΅
176
- 10.22 - 10.28: Π½Π°
177
- 10.36 - 10.74: Ρ‚Π°ΠΉΠ²Π°Π½ΡŒ
178
- 11.1 - 11.8: Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½ΡΡŒΠΊΠΈΠΉ
179
- 11.88 - 12.46: Π²Ρ–ΠΉΡΡŒΠΊΠΎΠ²Ρ–
180
- 12.82 - 13.12: ΠΌΠ°ΡŽΡ‚ΡŒ
181
- 13.18 - 13.34: ΠΉΠΎΠ³ΠΎ
182
- 13.62 - 14.2: Π·Π°Ρ…ΠΈΡ‰Π°Ρ‚ΠΈ
183
- 14.8 - 15.38: Π΅Π²ΡƒΠΉΠ²Π³Π΅Ρ€Π΅
184
  ```
 
1
+ # `gradio-learning`
 
 
 
 
 
 
 
 
2
 
3
+ ## Install
4
 
5
+ ```shell
6
+ uv venv --python 3.12
7
 
8
+ source .venv/bin/activate
 
9
 
10
+ uv pip install -r requirements.txt
11
 
12
+ # in development mode
13
+ uv pip install -r requirements-dev.txt
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  ```
app.py CHANGED
@@ -1,93 +1,132 @@
1
- import gradio as gr
2
- from transformers import Wav2Vec2CTCTokenizer, Wav2Vec2ForCTC, Wav2Vec2ProcessorWithLM
3
  import torch
4
- import torchaudio
5
 
6
- model_name = "Yehor/wav2vec2-xls-r-300m-uk-with-small-lm"
7
 
8
- tokenizer = Wav2Vec2CTCTokenizer.from_pretrained(model_name)
9
- processor = Wav2Vec2ProcessorWithLM.from_pretrained(model_name)
10
- model = Wav2Vec2ForCTC.from_pretrained(model_name)
11
- model.to("cpu")
12
 
 
 
 
13
 
14
- # define function to read in sound file
15
- def speech_file_to_array_fn(path, max_seconds=10):
16
- batch = {"file": path}
17
- speech_array, sampling_rate = torchaudio.load(batch["file"])
18
- if sampling_rate != 16000:
19
- transform = torchaudio.transforms.Resample(
20
- orig_freq=sampling_rate, new_freq=16000
21
- )
22
- speech_array = transform(speech_array)
23
- speech_array = speech_array[0]
24
- if max_seconds > 0:
25
- speech_array = speech_array[: max_seconds * 16000]
26
- batch["speech"] = speech_array.numpy()
27
- batch["sampling_rate"] = 16000
28
- return batch
29
-
30
-
31
- # tokenize
32
- def inference(audio):
33
- # read in sound file
34
- # load dummy dataset and read soundfiles
35
- sp = speech_file_to_array_fn(audio.name)
36
-
37
- sample_rate = 16000
38
- # stride_length_s is a tuple of the left and right stride length.
39
- # With only 1 number, both sides get the same stride, by default
40
- # the stride_length on one side is 1/6th of the chunk_length_s
41
- input_values = processor(
42
- sp["speech"],
43
- sample_rate=sample_rate,
44
- chunk_length_s=10,
45
- stride_length_s=(4, 2),
46
- return_tensors="pt",
47
- ).input_values
48
-
49
- with torch.no_grad():
50
- logits = model(input_values).logits
51
-
52
- pred_ids = torch.argmax(logits, axis=-1).cpu().tolist()
53
- prediction = tokenizer.decode(pred_ids[0], output_word_offsets=True)
54
-
55
- time_offset = 320 / sample_rate
56
-
57
- total_prediction = []
58
- words = []
59
- for item in prediction.word_offsets:
60
- r = item
61
-
62
- s = round(r['start_offset'] * time_offset, 2)
63
- e = round(r['end_offset'] * time_offset, 2)
64
-
65
- total_prediction.append(f"{s} - {e}: {r['word']}")
66
- words.append(r['word'])
67
-
68
- print(prediction[0])
69
-
70
- return "\n".join(total_prediction) + "\n\n" + ' '.join(words)
71
-
72
-
73
- inputs = gr.inputs.Audio(label="Input Audio", type="file")
74
- outputs = gr.outputs.Textbox(label="Output Text")
75
- title = model_name
76
- description = f"Gradio demo for a {model_name}. To use it, simply upload your audio, or click one of the examples to load them. Read more at the links below. Currently supports .wav 16_000hz files"
77
- article = "<p style='text-align: center'><a href='https://github.com/egorsmkv/wav2vec2-uk-demo' target='_blank'> Github repo</a> | <a href='<HF Space link>' target='_blank'>Pretrained model</a> | Made with help from <a href='https://github.com/robinhad' target='_blank'>@robinhad</a></p>"
78
- examples = [
79
- ["long_1.wav"],
80
- ["mer_lviv_interview.wav"],
81
- ["short_1.wav"],
82
- ["tsn_2.wav"],
83
- ["tsn.wav"],
84
  ]
85
- gr.Interface(
86
- inference,
87
- inputs,
88
- outputs,
89
- title=title,
90
- description=description,
91
- article=article,
92
- examples=examples,
93
- ).launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import time
2
+
3
  import torch
4
+ import librosa
5
 
6
+ import gradio as gr
7
 
8
+ from transformers import AutoModelForCTC, Wav2Vec2BertProcessor
 
 
 
9
 
10
+ model_name = "Yehor/w2v-bert-2.0-uk"
11
+ device = "cpu"
12
+ max_duration = 30
13
 
14
+ asr_model = AutoModelForCTC.from_pretrained(model_name).to(device)
15
+ processor = Wav2Vec2BertProcessor.from_pretrained(model_name)
16
+
17
+ audio_samples = [
18
+ "sample_1.wav",
19
+ "sample_2.wav",
20
+ "sample_3.wav",
21
+ "sample_4.wav",
22
+ "sample_5.wav",
23
+ "sample_6.wav",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  ]
25
+
26
+ description_head = """
27
+ # Speech-to-Text for Ukrainian
28
+
29
+ ## Overview
30
+
31
+ This space uses https://huggingface.co/Yehor/w2v-bert-2.0-uk model that solves
32
+ a Speech-to-Text task for the Ukrainian language.
33
+ """.strip()
34
+
35
+ description_foot = """
36
+ ## Community
37
+
38
+ - Join our Discord server - https://discord.gg/yVAjkBgmt4 - where we're talking about Data Science,
39
+ Machine Learning, Deep Learning, and Artificial Intelligence.
40
+
41
+ - Join our Speech Recognition Group in Telegram: https://t.me/speech_recognition_uk
42
+ """.strip()
43
+
44
+
45
+ def inference(audio_path, progress=gr.Progress()):
46
+ gr.Info("Starting process", duration=2)
47
+
48
+ progress(0, desc="Starting")
49
+
50
+ duration = librosa.get_duration(path=audio_path)
51
+ if duration > max_duration:
52
+ raise gr.Error("The duration of the file exceeds 10 seconds.")
53
+
54
+ paths = [
55
+ audio_path,
56
+ ]
57
+
58
+ results = []
59
+
60
+ for path in progress.tqdm(paths, desc="Recognizing...", unit="file"):
61
+ t0 = time.time()
62
+
63
+ audio_duration = librosa.get_duration(path=path, sr=16_000)
64
+ audio_input, _ = librosa.load(path, mono=True, sr=16_000)
65
+
66
+ features = processor([audio_input], sampling_rate=16_000).input_features
67
+ features = torch.tensor(features).to(device)
68
+
69
+ with torch.inference_mode():
70
+ logits = asr_model(features).logits
71
+
72
+ predicted_ids = torch.argmax(logits, dim=-1)
73
+ predictions = processor.batch_decode(predicted_ids)
74
+
75
+ elapsed_time = round(time.time() - t0, 2)
76
+ rtf = round(elapsed_time / audio_duration, 4)
77
+ audio_duration = round(audio_duration, 2)
78
+
79
+ results.append(
80
+ {
81
+ "path": path.split("/")[-1],
82
+ "transcription": "\n".join(predictions),
83
+ "audio_duration": audio_duration,
84
+ "rtf": rtf,
85
+ }
86
+ )
87
+
88
+ gr.Info("Finished...", duration=2)
89
+
90
+ result_texts = []
91
+
92
+ for result in results:
93
+ result_texts.append(f'**{result["path"]}**')
94
+ result_texts.append("\n\n")
95
+ result_texts.append(f"> {result['transcription']}")
96
+ result_texts.append("\n\n")
97
+ result_texts.append(f'**Audio duration**: {result['audio_duration']}')
98
+ result_texts.append("\n")
99
+ result_texts.append(f'**Real-Time Factor**: {result['rtf']}')
100
+
101
+ return "\n".join(result_texts)
102
+
103
+
104
+ demo = gr.Blocks(
105
+ title="Speech-to-Text for Ukrainian",
106
+ analytics_enabled=False,
107
+ )
108
+
109
+ with demo:
110
+ gr.Markdown(description_head)
111
+
112
+ gr.Markdown(f"## Demo (max. duration: **{max_duration}** seconds)")
113
+
114
+ with gr.Row():
115
+ audio_file = gr.Audio(label="Audio file", type="filepath")
116
+ transcription = gr.Markdown(
117
+ label="Transcription",
118
+ value="Recognized text will appear here. Use **an example file** below the Recognize button,"
119
+ "upload **your audio file**, or use **the microphone** to record something...",
120
+ )
121
+
122
+ gr.Button("Recognize").click(inference, inputs=audio_file, outputs=transcription)
123
+
124
+ with gr.Row():
125
+ gr.Examples(
126
+ label="Choose an example audio", inputs=audio_file, examples=audio_samples
127
+ )
128
+
129
+ gr.Markdown(description_foot)
130
+
131
+ if __name__ == "__main__":
132
+ demo.launch()
inference.py DELETED
@@ -1,68 +0,0 @@
1
- import argparse
2
- import torch
3
- import torchaudio
4
- from pathlib import Path
5
- from transformers import Wav2Vec2ProcessorWithLM, Wav2Vec2ForCTC
6
-
7
-
8
- def main(args):
9
- processor = Wav2Vec2ProcessorWithLM.from_pretrained(args.model_id)
10
- model = Wav2Vec2ForCTC.from_pretrained(args.model_id)
11
- model.to('cpu')
12
-
13
- files = args.path_files.split(',')
14
-
15
- for path_file in files:
16
- print('File:', path_file)
17
-
18
- wav_file_path = str(Path(path_file).absolute())
19
- waveform, sample_rate = torchaudio.load(wav_file_path)
20
-
21
- if sample_rate != 16000:
22
- resample = torchaudio.transforms.Resample(
23
- sample_rate, 16000, resampling_method='sinc_interpolation')
24
- speech_array = resample(waveform)
25
- sp = speech_array.squeeze().numpy()
26
- else:
27
- sp = waveform.squeeze().numpy()
28
-
29
- # stride_length_s is a tuple of the left and right stride length.
30
- # With only 1 number, both sides get the same stride, by default
31
- # the stride_length on one side is 1/6th of the chunk_length_s
32
- input_values = processor(sp,
33
- sample_rate=16000,
34
- chunk_length_s=args.chunk_length_s,
35
- stride_length_s=(args.stride_length_s_l, args.stride_length_s_r),
36
- return_tensors="pt").input_values
37
-
38
- with torch.no_grad():
39
- logits = model(input_values).logits
40
-
41
- prediction = processor.batch_decode(logits.numpy()).text
42
- print(prediction[0])
43
-
44
-
45
- if __name__ == "__main__":
46
- parser = argparse.ArgumentParser()
47
-
48
- parser.add_argument(
49
- "--path_files", type=str, required=True, help="WAV files to transcribe, separated by a comma"
50
- )
51
- parser.add_argument(
52
- "--model_id", type=str, required=True, help="Model identifier. Should be loadable with πŸ€— Transformers"
53
- )
54
- parser.add_argument(
55
- "--chunk_length_s", type=float, default=None, help="Chunk length in seconds. Defaults to 5 seconds."
56
- )
57
- parser.add_argument(
58
- "--stride_length_s_l", type=int, default=None, help="Stride of the audio chunks, left value."
59
- )
60
- parser.add_argument(
61
- "--stride_length_s_r", type=int, default=None, help="Stride of the audio chunks, right value."
62
- )
63
- parser.add_argument(
64
- "--log_outputs", action="store_true", help="If defined, write outputs to log file for analysis."
65
- )
66
- args = parser.parse_args()
67
-
68
- main(args)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inference_gpu.py DELETED
@@ -1,69 +0,0 @@
1
- import argparse
2
- import torch
3
- import torchaudio
4
- from pathlib import Path
5
- from transformers import Wav2Vec2ProcessorWithLM, Wav2Vec2ForCTC
6
-
7
-
8
- def main(args):
9
- processor = Wav2Vec2ProcessorWithLM.from_pretrained(args.model_id)
10
- model = Wav2Vec2ForCTC.from_pretrained(args.model_id)
11
- model.to('cuda')
12
-
13
- files = args.path_files.split(',')
14
-
15
- for path_file in files:
16
- print('File:', path_file)
17
-
18
- wav_file_path = str(Path(path_file).absolute())
19
- waveform, sample_rate = torchaudio.load(wav_file_path)
20
-
21
- if sample_rate != 16000:
22
- resample = torchaudio.transforms.Resample(
23
- sample_rate, 16000, resampling_method='sinc_interpolation')
24
- speech_array = resample(waveform)
25
- sp = speech_array.squeeze().numpy()
26
- else:
27
- sp = waveform.squeeze().numpy()
28
-
29
- # stride_length_s is a tuple of the left and right stride length.
30
- # With only 1 number, both sides get the same stride, by default
31
- # the stride_length on one side is 1/6th of the chunk_length_s
32
- input_values = processor(sp,
33
- sample_rate=16000,
34
- chunk_length_s=args.chunk_length_s,
35
- stride_length_s=(args.stride_length_s_l, args.stride_length_s_r),
36
- return_tensors="pt").input_values
37
- input_values = input_values.cuda()
38
-
39
- with torch.no_grad():
40
- logits = model(input_values).logits
41
-
42
- prediction = processor.batch_decode(logits.cpu().numpy()).text
43
- print(prediction[0])
44
-
45
-
46
- if __name__ == "__main__":
47
- parser = argparse.ArgumentParser()
48
-
49
- parser.add_argument(
50
- "--path_files", type=str, required=True, help="WAV files to transcribe, separated by a comma"
51
- )
52
- parser.add_argument(
53
- "--model_id", type=str, required=True, help="Model identifier. Should be loadable with πŸ€— Transformers"
54
- )
55
- parser.add_argument(
56
- "--chunk_length_s", type=float, default=None, help="Chunk length in seconds. Defaults to 5 seconds."
57
- )
58
- parser.add_argument(
59
- "--stride_length_s_l", type=int, default=None, help="Stride of the audio chunks, left value."
60
- )
61
- parser.add_argument(
62
- "--stride_length_s_r", type=int, default=None, help="Stride of the audio chunks, right value."
63
- )
64
- parser.add_argument(
65
- "--log_outputs", action="store_true", help="If defined, write outputs to log file for analysis."
66
- )
67
- args = parser.parse_args()
68
-
69
- main(args)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inference_timestamps.py DELETED
@@ -1,86 +0,0 @@
1
- import argparse
2
- from time import gmtime, strftime
3
-
4
- import torch
5
- import torchaudio
6
- from pathlib import Path
7
- from transformers import Wav2Vec2ProcessorWithLM, Wav2Vec2ForCTC, Wav2Vec2CTCTokenizer
8
-
9
-
10
- def main(args):
11
- tokenizer = Wav2Vec2CTCTokenizer.from_pretrained(args.model_id)
12
- processor = Wav2Vec2ProcessorWithLM.from_pretrained(args.model_id)
13
- model = Wav2Vec2ForCTC.from_pretrained(args.model_id)
14
- model.to('cpu')
15
-
16
- files = args.path_files.split(',')
17
-
18
- for path_file in files:
19
- print('File:', path_file)
20
-
21
- wav_file_path = str(Path(path_file).absolute())
22
- waveform, sample_rate = torchaudio.load(wav_file_path)
23
-
24
- if sample_rate != 16000:
25
- resample = torchaudio.transforms.Resample(
26
- sample_rate, 16000, resampling_method='sinc_interpolation')
27
- sample_rate = 16000
28
- speech_array = resample(waveform)
29
- sp = speech_array.squeeze().numpy()
30
- else:
31
- sp = waveform.squeeze().numpy()
32
-
33
- # stride_length_s is a tuple of the left and right stride length.
34
- # With only 1 number, both sides get the same stride, by default
35
- # the stride_length on one side is 1/6th of the chunk_length_s
36
- input_values = processor(sp,
37
- sample_rate=16000,
38
- chunk_length_s=args.chunk_length_s,
39
- stride_length_s=(args.stride_length_s_l, args.stride_length_s_r),
40
- return_tensors="pt").input_values
41
-
42
- with torch.no_grad():
43
- logits = model(input_values).logits
44
-
45
- # prediction = tokenizer.decode(pred_ids[0], output_word_offsets=True)
46
- # prediction = tokenizer.decode(pred_ids[0], output_char_offsets=True)
47
-
48
- pred_ids = torch.argmax(logits, axis=-1).cpu().tolist()
49
- prediction = tokenizer.decode(pred_ids[0], output_word_offsets=True)
50
-
51
- print(f'Sample rate: {sample_rate}')
52
- time_offset = 320 / sample_rate
53
-
54
- for item in prediction.word_offsets:
55
- r = item
56
-
57
- s = round(r['start_offset'] * time_offset, 2)
58
- e = round(r['end_offset'] * time_offset, 2)
59
-
60
- print(f"{s} - {e}: {r['word']}")
61
-
62
-
63
- if __name__ == "__main__":
64
- parser = argparse.ArgumentParser()
65
-
66
- parser.add_argument(
67
- "--path_files", type=str, required=True, help="WAV files to transcribe, separated by a comma"
68
- )
69
- parser.add_argument(
70
- "--model_id", type=str, required=True, help="Model identifier. Should be loadable with πŸ€— Transformers"
71
- )
72
- parser.add_argument(
73
- "--chunk_length_s", type=float, default=None, help="Chunk length in seconds. Defaults to 5 seconds."
74
- )
75
- parser.add_argument(
76
- "--stride_length_s_l", type=int, default=None, help="Stride of the audio chunks, left value."
77
- )
78
- parser.add_argument(
79
- "--stride_length_s_r", type=int, default=None, help="Stride of the audio chunks, right value."
80
- )
81
- parser.add_argument(
82
- "--log_outputs", action="store_true", help="If defined, write outputs to log file for analysis."
83
- )
84
- args = parser.parse_args()
85
-
86
- main(args)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
mer_lviv_interview.wav DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:921bda3185b93787b15887a715688801a4fa9c2a0c255cfbdc674380a21f9d17
3
- size 12759536
 
 
 
 
requirements-dev.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ ruff
requirements.txt CHANGED
@@ -1,9 +1,8 @@
1
- # gradio requirements
2
- gradio==2.8.2
3
- jinja2==3.0.3
4
- # ml requirements
5
- git+https://github.com/huggingface/transformers@bb7949b35a0a2247bc20c7cb6d86764770ca3232
6
- pyctcdecode==0.3.0
7
- https://github.com/kpu/kenlm/archive/master.zip
8
- torch==1.10.2
9
- torchaudio===0.10.2
 
1
+ gradio
2
+
3
+ torch
4
+ torchaudio
5
+
6
+ transformers
7
+
8
+ librosa
 
tsn_2.wav β†’ sample_1.wav RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:c4b9a8ac0426792b22b9ef5c59b76db659774ac91699b00eb1748249ae24f2fb
3
- size 2941310
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:172ade978b299f4a0c47e3b76666d1a06161e6001fbb5591b82038a1bbc4b5ad
3
+ size 272568
short_1.wav β†’ sample_2.wav RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:5ad55ed79a9fe597f6e836fe6a7f3c1bd25d9d48cb6f795ef114ccfa601ee14d
3
- size 1481694
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:98fe42f22f8ea632714081a958dc035f3d507523fd340b320a1223ac2f55ccac
3
+ size 199942
tsn.wav β†’ sample_3.wav RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:0cd10579f46c14c99ac623f4e854c7b359d232e6f8c7c29c6c4c1789b83b2a73
3
- size 1008510
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:83c0b7375beada8cee74b5de226da494368fcc6a3ce692913b3302dcda0bd9a2
3
+ size 192842
long_1.wav β†’ sample_4.wav RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:348f9c2f15d378b2b489b12e17adb969d7aa7306c0dfde5093856e48288c736c
3
- size 6164574
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:19e466ee9c0c129c1eecf93eb6791a44c2ee8d68dce2c3e8fd3734b87f28324a
3
+ size 241442
sample_5.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5af19120c92859846a08496e0a617c21877cae2db5807d211f0a431d95163a3e
3
+ size 193388
sample_6.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ac877968d5749438930339497f7548046003390a848496136f6cbe8a74c51629
3
+ size 186290