Abid commited on
Commit
73d6051
1 Parent(s): b9df364

first test

Browse files
.dvc/.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ /config.local
2
+ /tmp
3
+ /cache
.dvc/config ADDED
File without changes
.dvc/plots/confusion.json ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
3
+ "data": {
4
+ "values": "<DVC_METRIC_DATA>"
5
+ },
6
+ "title": "<DVC_METRIC_TITLE>",
7
+ "facet": {
8
+ "field": "rev",
9
+ "type": "nominal"
10
+ },
11
+ "spec": {
12
+ "transform": [
13
+ {
14
+ "aggregate": [
15
+ {
16
+ "op": "count",
17
+ "as": "xy_count"
18
+ }
19
+ ],
20
+ "groupby": [
21
+ "<DVC_METRIC_Y>",
22
+ "<DVC_METRIC_X>"
23
+ ]
24
+ },
25
+ {
26
+ "impute": "xy_count",
27
+ "groupby": [
28
+ "rev",
29
+ "<DVC_METRIC_Y>"
30
+ ],
31
+ "key": "<DVC_METRIC_X>",
32
+ "value": 0
33
+ },
34
+ {
35
+ "impute": "xy_count",
36
+ "groupby": [
37
+ "rev",
38
+ "<DVC_METRIC_X>"
39
+ ],
40
+ "key": "<DVC_METRIC_Y>",
41
+ "value": 0
42
+ },
43
+ {
44
+ "joinaggregate": [
45
+ {
46
+ "op": "max",
47
+ "field": "xy_count",
48
+ "as": "max_count"
49
+ }
50
+ ],
51
+ "groupby": []
52
+ },
53
+ {
54
+ "calculate": "datum.xy_count / datum.max_count",
55
+ "as": "percent_of_max"
56
+ }
57
+ ],
58
+ "encoding": {
59
+ "x": {
60
+ "field": "<DVC_METRIC_X>",
61
+ "type": "nominal",
62
+ "sort": "ascending",
63
+ "title": "<DVC_METRIC_X_LABEL>"
64
+ },
65
+ "y": {
66
+ "field": "<DVC_METRIC_Y>",
67
+ "type": "nominal",
68
+ "sort": "ascending",
69
+ "title": "<DVC_METRIC_Y_LABEL>"
70
+ }
71
+ },
72
+ "layer": [
73
+ {
74
+ "mark": "rect",
75
+ "width": 300,
76
+ "height": 300,
77
+ "encoding": {
78
+ "color": {
79
+ "field": "xy_count",
80
+ "type": "quantitative",
81
+ "title": "",
82
+ "scale": {
83
+ "domainMin": 0,
84
+ "nice": true
85
+ }
86
+ }
87
+ }
88
+ },
89
+ {
90
+ "mark": "text",
91
+ "encoding": {
92
+ "text": {
93
+ "field": "xy_count",
94
+ "type": "quantitative"
95
+ },
96
+ "color": {
97
+ "condition": {
98
+ "test": "datum.percent_of_max > 0.5",
99
+ "value": "white"
100
+ },
101
+ "value": "black"
102
+ }
103
+ }
104
+ }
105
+ ]
106
+ }
107
+ }
.dvc/plots/confusion_normalized.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
3
+ "data": {
4
+ "values": "<DVC_METRIC_DATA>"
5
+ },
6
+ "title": "<DVC_METRIC_TITLE>",
7
+ "facet": {
8
+ "field": "rev",
9
+ "type": "nominal"
10
+ },
11
+ "spec": {
12
+ "transform": [
13
+ {
14
+ "aggregate": [
15
+ {
16
+ "op": "count",
17
+ "as": "xy_count"
18
+ }
19
+ ],
20
+ "groupby": [
21
+ "<DVC_METRIC_Y>",
22
+ "<DVC_METRIC_X>"
23
+ ]
24
+ },
25
+ {
26
+ "impute": "xy_count",
27
+ "groupby": [
28
+ "rev",
29
+ "<DVC_METRIC_Y>"
30
+ ],
31
+ "key": "<DVC_METRIC_X>",
32
+ "value": 0
33
+ },
34
+ {
35
+ "impute": "xy_count",
36
+ "groupby": [
37
+ "rev",
38
+ "<DVC_METRIC_X>"
39
+ ],
40
+ "key": "<DVC_METRIC_Y>",
41
+ "value": 0
42
+ },
43
+ {
44
+ "joinaggregate": [
45
+ {
46
+ "op": "sum",
47
+ "field": "xy_count",
48
+ "as": "sum_y"
49
+ }
50
+ ],
51
+ "groupby": [
52
+ "<DVC_METRIC_Y>"
53
+ ]
54
+ },
55
+ {
56
+ "calculate": "datum.xy_count / datum.sum_y",
57
+ "as": "percent_of_y"
58
+ }
59
+ ],
60
+ "encoding": {
61
+ "x": {
62
+ "field": "<DVC_METRIC_X>",
63
+ "type": "nominal",
64
+ "sort": "ascending",
65
+ "title": "<DVC_METRIC_X_LABEL>"
66
+ },
67
+ "y": {
68
+ "field": "<DVC_METRIC_Y>",
69
+ "type": "nominal",
70
+ "sort": "ascending",
71
+ "title": "<DVC_METRIC_Y_LABEL>"
72
+ }
73
+ },
74
+ "layer": [
75
+ {
76
+ "mark": "rect",
77
+ "width": 300,
78
+ "height": 300,
79
+ "encoding": {
80
+ "color": {
81
+ "field": "percent_of_y",
82
+ "type": "quantitative",
83
+ "title": "",
84
+ "scale": {
85
+ "domain": [
86
+ 0,
87
+ 1
88
+ ]
89
+ }
90
+ }
91
+ }
92
+ },
93
+ {
94
+ "mark": "text",
95
+ "encoding": {
96
+ "text": {
97
+ "field": "percent_of_y",
98
+ "type": "quantitative",
99
+ "format": ".2f"
100
+ },
101
+ "color": {
102
+ "condition": {
103
+ "test": "datum.percent_of_y > 0.5",
104
+ "value": "white"
105
+ },
106
+ "value": "black"
107
+ }
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ }
.dvc/plots/linear.json ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
3
+ "data": {
4
+ "values": "<DVC_METRIC_DATA>"
5
+ },
6
+ "title": "<DVC_METRIC_TITLE>",
7
+ "width": 300,
8
+ "height": 300,
9
+ "layer": [
10
+ {
11
+ "encoding": {
12
+ "x": {
13
+ "field": "<DVC_METRIC_X>",
14
+ "type": "quantitative",
15
+ "title": "<DVC_METRIC_X_LABEL>"
16
+ },
17
+ "y": {
18
+ "field": "<DVC_METRIC_Y>",
19
+ "type": "quantitative",
20
+ "title": "<DVC_METRIC_Y_LABEL>",
21
+ "scale": {
22
+ "zero": false
23
+ }
24
+ },
25
+ "color": {
26
+ "field": "rev",
27
+ "type": "nominal"
28
+ }
29
+ },
30
+ "layer": [
31
+ {
32
+ "mark": "line"
33
+ },
34
+ {
35
+ "selection": {
36
+ "label": {
37
+ "type": "single",
38
+ "nearest": true,
39
+ "on": "mouseover",
40
+ "encodings": [
41
+ "x"
42
+ ],
43
+ "empty": "none",
44
+ "clear": "mouseout"
45
+ }
46
+ },
47
+ "mark": "point",
48
+ "encoding": {
49
+ "opacity": {
50
+ "condition": {
51
+ "selection": "label",
52
+ "value": 1
53
+ },
54
+ "value": 0
55
+ }
56
+ }
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "transform": [
62
+ {
63
+ "filter": {
64
+ "selection": "label"
65
+ }
66
+ }
67
+ ],
68
+ "layer": [
69
+ {
70
+ "mark": {
71
+ "type": "rule",
72
+ "color": "gray"
73
+ },
74
+ "encoding": {
75
+ "x": {
76
+ "field": "<DVC_METRIC_X>",
77
+ "type": "quantitative"
78
+ }
79
+ }
80
+ },
81
+ {
82
+ "encoding": {
83
+ "text": {
84
+ "type": "quantitative",
85
+ "field": "<DVC_METRIC_Y>"
86
+ },
87
+ "x": {
88
+ "field": "<DVC_METRIC_X>",
89
+ "type": "quantitative"
90
+ },
91
+ "y": {
92
+ "field": "<DVC_METRIC_Y>",
93
+ "type": "quantitative"
94
+ }
95
+ },
96
+ "layer": [
97
+ {
98
+ "mark": {
99
+ "type": "text",
100
+ "align": "left",
101
+ "dx": 5,
102
+ "dy": -5
103
+ },
104
+ "encoding": {
105
+ "color": {
106
+ "type": "nominal",
107
+ "field": "rev"
108
+ }
109
+ }
110
+ }
111
+ ]
112
+ }
113
+ ]
114
+ }
115
+ ]
116
+ }
.dvc/plots/scatter.json ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
3
+ "data": {
4
+ "values": "<DVC_METRIC_DATA>"
5
+ },
6
+ "title": "<DVC_METRIC_TITLE>",
7
+ "width": 300,
8
+ "height": 300,
9
+ "layer": [
10
+ {
11
+ "encoding": {
12
+ "x": {
13
+ "field": "<DVC_METRIC_X>",
14
+ "type": "quantitative",
15
+ "title": "<DVC_METRIC_X_LABEL>"
16
+ },
17
+ "y": {
18
+ "field": "<DVC_METRIC_Y>",
19
+ "type": "quantitative",
20
+ "title": "<DVC_METRIC_Y_LABEL>",
21
+ "scale": {
22
+ "zero": false
23
+ }
24
+ },
25
+ "color": {
26
+ "field": "rev",
27
+ "type": "nominal"
28
+ }
29
+ },
30
+ "layer": [
31
+ {
32
+ "mark": "point"
33
+ },
34
+ {
35
+ "selection": {
36
+ "label": {
37
+ "type": "single",
38
+ "nearest": true,
39
+ "on": "mouseover",
40
+ "encodings": [
41
+ "x"
42
+ ],
43
+ "empty": "none",
44
+ "clear": "mouseout"
45
+ }
46
+ },
47
+ "mark": "point",
48
+ "encoding": {
49
+ "opacity": {
50
+ "condition": {
51
+ "selection": "label",
52
+ "value": 1
53
+ },
54
+ "value": 0
55
+ }
56
+ }
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "transform": [
62
+ {
63
+ "filter": {
64
+ "selection": "label"
65
+ }
66
+ }
67
+ ],
68
+ "layer": [
69
+ {
70
+ "encoding": {
71
+ "text": {
72
+ "type": "quantitative",
73
+ "field": "<DVC_METRIC_Y>"
74
+ },
75
+ "x": {
76
+ "field": "<DVC_METRIC_X>",
77
+ "type": "quantitative"
78
+ },
79
+ "y": {
80
+ "field": "<DVC_METRIC_Y>",
81
+ "type": "quantitative"
82
+ }
83
+ },
84
+ "layer": [
85
+ {
86
+ "mark": {
87
+ "type": "text",
88
+ "align": "left",
89
+ "dx": 5,
90
+ "dy": -5
91
+ },
92
+ "encoding": {
93
+ "color": {
94
+ "type": "nominal",
95
+ "field": "rev"
96
+ }
97
+ }
98
+ }
99
+ ]
100
+ }
101
+ ]
102
+ }
103
+ ]
104
+ }
.dvc/plots/simple.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
3
+ "data": {
4
+ "values": "<DVC_METRIC_DATA>"
5
+ },
6
+ "title": "<DVC_METRIC_TITLE>",
7
+ "width": 300,
8
+ "height": 300,
9
+ "mark": {
10
+ "type": "line"
11
+ },
12
+ "encoding": {
13
+ "x": {
14
+ "field": "<DVC_METRIC_X>",
15
+ "type": "quantitative",
16
+ "title": "<DVC_METRIC_X_LABEL>"
17
+ },
18
+ "y": {
19
+ "field": "<DVC_METRIC_Y>",
20
+ "type": "quantitative",
21
+ "title": "<DVC_METRIC_Y_LABEL>",
22
+ "scale": {
23
+ "zero": false
24
+ }
25
+ },
26
+ "color": {
27
+ "field": "rev",
28
+ "type": "nominal"
29
+ }
30
+ }
31
+ }
.dvc/plots/smooth.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
3
+ "data": {
4
+ "values": "<DVC_METRIC_DATA>"
5
+ },
6
+ "title": "<DVC_METRIC_TITLE>",
7
+ "mark": {
8
+ "type": "line"
9
+ },
10
+ "encoding": {
11
+ "x": {
12
+ "field": "<DVC_METRIC_X>",
13
+ "type": "quantitative",
14
+ "title": "<DVC_METRIC_X_LABEL>"
15
+ },
16
+ "y": {
17
+ "field": "<DVC_METRIC_Y>",
18
+ "type": "quantitative",
19
+ "title": "<DVC_METRIC_Y_LABEL>",
20
+ "scale": {
21
+ "zero": false
22
+ }
23
+ },
24
+ "color": {
25
+ "field": "rev",
26
+ "type": "nominal"
27
+ }
28
+ },
29
+ "transform": [
30
+ {
31
+ "loess": "<DVC_METRIC_Y>",
32
+ "on": "<DVC_METRIC_X>",
33
+ "groupby": [
34
+ "rev"
35
+ ],
36
+ "bandwidth": 0.3
37
+ }
38
+ ]
39
+ }
.dvcignore ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ # Add patterns of files dvc should ignore, which could improve
2
+ # the performance. Learn more at
3
+ # https://dvc.org/doc/user-guide/dvcignore
.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /Data
2
+ /Model
Data.dvc ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ outs:
2
+ - md5: 5bd273a994a08be9df29122164606626.dir
3
+ size: 74555595
4
+ nfiles: 2927
5
+ path: Data
Eval Results/log_mozilla-foundation_common_voice_8_0_ur_test_predictions.txt ADDED
@@ -0,0 +1,682 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 0
2
+ اب نے ٹپیدسون دیتے ہیں
3
+ 1
4
+ مزدور تکے کہ علاوہ سرکاری اور کاروباری لو نو ڈر بجے کام شروع کرتے
5
+ 2
6
+ جنگل مشرف جاتے ہیں
7
+ 3
8
+ دلچہت پرعمبریہ ہے
9
+ 4
10
+ یہ نہیں کہا جائے گا کہ زید کی طرف سے دی گئی ایک بک کی ٹین طلاق واقیا ہو گئی ہیں
11
+ 5
12
+ وقت پر رقوم کبھی بھی واپس نہ کیں
13
+ 6
14
+ آئی سی سی رینکنگ محمد اب باز کی کیریئر کی بہترین پوجیشن
15
+ 7
16
+ مغریبی افریکا
17
+ 8
18
+ جہاں دنیا کا سب سے اونچا
19
+ 9
20
+ ایسا ہو گا
21
+ 10
22
+ پھر کیا ہو گا
23
+ 11
24
+ گورنر کا سب سے اہم پہلوں موجود رام کی اصلی ہے
25
+ 12
26
+ حکومت رے بہت خوش نہیں تھے
27
+ 13
28
+ اگر انچھے ملاقات ہو تو میری طرف سلام عرض کی جیئے گا
29
+ 14
30
+ یہی خدا اور شردیوں کے مہینے ہیں
31
+ 15
32
+ کہ ان کے اندر صورت کی روشنی پانچ ٹی رہے
33
+ 16
34
+ ماحولیاتی آلودگی اور پوری دنیا کے بڑھتے ہوئے در جا حرارت
35
+ 17
36
+ کال مند کوئی شاہراہ ہی کافی
37
+ 18
38
+ عروہ اور فران برلن میں کیا کر رہے ہیں
39
+ 19
40
+ دو ٹیمیں بنائی گئیں
41
+ 20
42
+ میں نے سوچا مجھے اسے کسی پبلک مقام پر ملنا چاہیے
43
+ 21
44
+ نواز شریف شاست میں کیسے کامیاب ہوئے
45
+ 22
46
+ کہ مشروبات ٹھنڈا کرنے کلیئر افر جلیٹرز کا ماحول دشمن طریقہ در کیا جائے
47
+ 23
48
+ کیسے آنے والی ڈاہائیوں میں صلے بی
49
+ 24
50
+ وہاں جھڑپیچاری ہوں
51
+ 25
52
+ آئی ایم ایف کا عرب ممالک پر اضافہ جات کم کرنے پر شور
53
+ 26
54
+ تب سنہ ہے
55
+ 27
56
+ سیف تیزی سے عملی صورت اختیار کر چکا ہے سرقاجمنسیز
57
+ 28
58
+ ہمارا پروبلم کیا ہے
59
+ 29
60
+ مل کی معیشت کی بدلتی صورتحال اور استقام کی وجوہات کیا ہیں
61
+ 30
62
+ برصغیر کے مسلمانوں میں بھی ایسے لوگ پائے جاتے ہیں
63
+ 31
64
+ جب جمہوریت کی بات ہوتی ہیں
65
+ 32
66
+ وہ بھی مسلمان ملک ہیں
67
+ 33
68
+ تو قادری صاحب کے لوگ بھریں رخنے کے لئے موجود ہیں
69
+ 34
70
+ تو ایسی کہانی میں
71
+ 35
72
+ اہر خانہ نے ان کی
73
+ 36
74
+ ہم شیشے کی منڈی کو اندر سے دیکھا چاتیں نہ کے بہر سے
75
+ 37
76
+ فنڈ کار اپنا محمول گا
77
+ 38
78
+ تیسا تھی کو کینڈا کی مائیں
79
+ 39
80
+ با کوئی اب بڑائی نام لے گیا
81
+ 40
82
+ تیس پرو پی بربائکٹھا
83
+ 41
84
+ میں شائد یہ ہی
85
+ 42
86
+ ہا جات پہلے تالیسمحیس ایک ہو
87
+ 43
88
+ جسٹےفائس سرد خو ب ہوگا
89
+ 44
90
+ راوصف یہ کے جیمد ہے
91
+ 45
92
+ ہمارے مسائل ٹھیا ہیں
93
+ 46
94
+ تو اس میں سوجیانقاشسا
95
+ 47
96
+ سی الفاظ میں گو ریاست کھیندربیہ جب ریاست نیک مکان کر
97
+ 48
98
+ اس کا مطلبیہ ہے
99
+ 49
100
+ ڈائنسانسےارج قرار دیا
101
+ 50
102
+ نے سب سے ہی سے بات خبطی ناقص ہے
103
+ 51
104
+ اور تھڑیناہسبککرورپ ہے
105
+ 52
106
+ قومیاداناس کو میرا ٹھیس تیار کر رہی
107
+ 53
108
+ تاریہنے جمود گیا فیصلس
109
+ 54
110
+ اس سر نان گستے
111
+ 55
112
+ خت تو ایسا نی کی شر نہ رہی
113
+ 56
114
+ وہ جسم دی تک رہا
115
+ 57
116
+ یہ ترس نے پہنا جاتا ہے
117
+ 58
118
+ گویا آسمان سے آنی واریسل طاس بس تھی
119
+ 59
120
+ ریت سانی فردوئدننمیاربت تھے
121
+ 60
122
+ بویا یہ مقصد کی قفیت ہوتی
123
+ 61
124
+ کیاآد کا بیشیس بایےواستہہے
125
+ 62
126
+ وہ سوائے شکاید کے اور کچھ نہیں کرتا
127
+ 63
128
+ اب اس تصویر پر لے دے ہو رہی ہے اور مطالکاایڈ ا
129
+ 64
130
+ یہاں سے چلے جایں ور ناہماپکھتھپڑمآرتیں گے
131
+ 65
132
+ آم میل جول میں نیئد ندیم سب انتہا ئے حلیم طبع اور منقصرال مزاج ہیں
133
+ 66
134
+ یہاں عروج زوال کا کانون کیا ہے
135
+ 67
136
+ ای خوا شکلا کی شعور کے ساتھ زندگی پزارے
137
+ 68
138
+ اور ہونے زمین کی طرف دوبارہ خارج کر دیتے ہیں
139
+ 69
140
+ زیادہ سے زویادہ دو بٹس کے اندر اس منصوبے کو تکمیلتت پہچانا چاہیے
141
+ 70
142
+ پرانی طرز کا کوئی سیاست دان ہو گا
143
+ 71
144
+ یہی جنا صاب کی ہے
145
+ 72
146
+ بسنے مدد کی ہر پیش کش ٹکرادی
147
+ 73
148
+ کے لیے پی اپنی عبارت گاہوں کو جا رہے ہوتے ہیں
149
+ 74
150
+ جنوبی کوریا
151
+ 75
152
+ قانون یہاں بھی ہے
153
+ 76
154
+ ان کے باب میں تاریخ پر انحصار نہیں کیا جائے گا
155
+ 77
156
+ اس میں صر فہرے استباچیہ ہیں
157
+ 78
158
+ ایک وجہ اس دور کا سیاسی نظام تھا
159
+ 79
160
+ ہائر لینڈ کے خلاف صرف ایک میچ
161
+ 80
162
+ کسی کو پتا نہیں
163
+ 81
164
+ باہر انتظار کروں
165
+ 82
166
+ ایکس پی کا ماکٹ شر دو فیصر جب کے ونڈوز ایک کا دو فصر تھا
167
+ 83
168
+ دو چہیتے تھے
169
+ 84
170
+ ہو کی چیمپئنز ٹروفیبیلجیام نے پاکستان کو دو کے مقابلے میں چار گھول سے شکست دیدی
171
+ 85
172
+ اپنے ضمیر کی آواز کو سمتا ہوں
173
+ 86
174
+ مچ سے شروع ہو کر جون تک
175
+ 87
176
+ سفر نامے میں یہ تعداد قلیل ہے
177
+ 88
178
+ کیمرون
179
+ 89
180
+ تم تو پسینے سے پورے بھی گئے
181
+ 90
182
+ ہم صڑق پر بیٹھ کرے
183
+ 91
184
+ مسلک دیو بند کے کام کا انداز فطری ہے
185
+ 92
186
+ امریکی باکصر فلائیٹ میں ویدر کمائی میں سب پر با چی لے گئے
187
+ 93
188
+ سوتی چھٹائی کی ترتیب
189
+ 94
190
+ اس کی ہمت ان پارٹیوں میں نہیں تھی
191
+ 95
192
+ معاملات ان سے نپٹائے نہیں جا رہے
193
+ 96
194
+ اپنا زہن نہیں بنا سکتا
195
+ 97
196
+ تو مرتے وقت تقت اس کو نبھانہ پڑھتا ہے
197
+ 98
198
+ پاتھ لین بالا دستی کی کرتے ہیں
199
+ 99
200
+ سنیل گواس کر پوری بات
201
+ 100
202
+ روپائے کی قدر سے کامی سے مہنگائی بڑھے کی گیاس پر آچا
203
+ 101
204
+ کچھ کرنے سے قاصر تھے
205
+ 102
206
+ حیربارجیک کمان بیٹا
207
+ 103
208
+ امریکہ یورپ آر
209
+ 104
210
+ اب مقلنہ ہے تو اس نقل مکانی سے نقل پا
211
+ 105
212
+ یہ اپروس خلط ہے
213
+ 106
214
+ یہ نے میں اپنے س لکھا ہے
215
+ 107
216
+ نے اس و کہتر پبیٹاہجو می حجم سے تقریب ہنا بڑا ہو گا
217
+ 108
218
+ بھی تالیبان نے اسکا
219
+ 109
220
+ پر منایا جانے لگا سے وائی امریکہ
221
+ 110
222
+ اسٹوریائی
223
+ 111
224
+ بحرت میں انتہا پسندی بھڑے تھی
225
+ 112
226
+ آسانی کو جھانکوں میں ان بچپنے سر آرہا تھا
227
+ 113
228
+ ہمکنگ اندیروں میں پسی ہوئی ہے
229
+ 114
230
+ شا ور شاور ہی نازی بھرو جنوسٹی میں روشن چیمپینشیطاعنے کار
231
+ 115
232
+ سیروچخانبادوٹ
233
+ 116
234
+ جنوبی افریکہ میں غالبع سر پرست ہوا
235
+ 117
236
+ جن کی کار کرتے گی کا معیار کر کیا اور اس کے علاوہ اور بھی بہت کچھ ہمارے قارئین جان سکے ہیں
237
+ 118
238
+ پر واضح بولنے کا فیصلہ تو ہمیں خود کرنا ہوتا ہے
239
+ 119
240
+ اسی طرحاں سماجی حوالے سے وہ ایک پدرسرانہ سماج تھا
241
+ 120
242
+ سب کو ایک ہی برتن میں انڈیل کر پھینٹنا شروع کرتی
243
+ 121
244
+ وہ بھی پوری ہو جائے
245
+ 122
246
+ اسٹیلین کھلاری نے مجھے اسامہ کہ کر پکارا مئی علی کہ داغا
247
+ 123
248
+ انہیں کی نسل میں نبوت رہی
249
+ 124
250
+ جو اس نے کیا وہ ایسے تھا جیسے قانون کو اپنے ہاتھوں میں لینا
251
+ 125
252
+ ہم فوجی نمازی ہو
253
+ 126
254
+ تو انکی خلاف مقدمات کا فیصلہ کین نہیں ہو رہا
255
+ 127
256
+ اور باز مسلمان سمجھتیں ہے
257
+ 128
258
+ وہ بے وفا عدت ہوا
259
+ 129
260
+ برونڈی
261
+ 130
262
+ تو یہاں کے عوام کے دروازے ان کے لیے بھی کھلے ہیں
263
+ 131
264
+ مجھے ٹھیک سے نہیں پتا
265
+ 132
266
+ یہ مضعرات صدیوں سے مراقست تجلیا تو مرجع خلائق ہیں
267
+ 133
268
+ اب تو حالات یہاں تک جا پہنچی ہے کہ عدلیہ کل
269
+ 134
270
+ کھاری پانی کو استعمال کر قابل بنانی والا پلانٹ کا افتتاح کیا ہے
271
+ 135
272
+ تو وہ اب ہے
273
+ 136
274
+ اور اس قیمت کو پاکستانی روپعیاتتصبور کر سکتے ہیں
275
+ 137
276
+ یہاں کے لوگ سی ا ہوں کو بہت پسند کرتے ہیں
277
+ 138
278
+ میدان سیاست میں کتنے بڑے نام رہے
279
+ 139
280
+ سائنس کی زبان میں پالا
281
+ 140
282
+ ٹگال نے کہا تھا اصارتت فرانس ہے
283
+ 141
284
+ عظم کی مضبوطی کے ساتھ اپنا بخت کجارو
285
+ 142
286
+ ان تاقوں کے وابستہ ہونی سے کوئی انسان بھی مستثنی نہیں ہے
287
+ 143
288
+ ہمی عیسی جیسا کہ ساتھ اس ماملی ہوتے کنا ہہے
289
+ 144
290
+ ایک یک بیان کی بات کشی کی آ گئی ہے
291
+ 145
292
+ کو یٹ مقامی ہوٹل کی جین سے تیلبحکتیراکی سکائی کئیڑےبائیفا
293
+ 146
294
+ اور چاجن کے بار استعمال ہو وال نٹے کی صحیح ادا برتا ہیں
295
+ 147
296
+ عذابی کہیروس کا تصکیراںہوتاہے
297
+ 148
298
+ کسی لین بول نے ٹین پاکستان بھیج لے سے ان کہریوو
299
+ 149
300
+ ٹحاپقامینواب صریمخان کی ایک پارٹی
301
+ 150
302
+ فیٹ تہا
303
+ 151
304
+ علمی پزار سمیت پاکستان میں ب سونی کی کی مت بڑ گلی
305
+ 152
306
+ اب نئی برگر پی پسی خوروں کو کیسے سن جا تا کہ میٹھا آملیٹو نے کی لئے سنا کو ضروری چھوڑی ہے
307
+ 153
308
+ یہی صوتحالسوشیل ہونی دیا تے
309
+ 154
310
+ علما اسی ہے سی ایسے فکری لیتے ہیں آرمامننااسیتباح سے اسے قبول کرتے ہے
311
+ 155
312
+ ہی پرند اور کے ساتھ سا
313
+ 156
314
+ د کلک گائے بکری اون نےم نے اور دو دینے والی دیگر جینمرہوسحاسل ہونے وال حشر ہونے والی کوش کو سر کوش کھا جاتاہے
315
+ 157
316
+ اس کے حمفلیرائٹ مقابل امریکہ کے سے امر گیوبکفاتکلار
317
+ 158
318
+ سرائی چست امان کیپیتاوائر میں انصاف ہے مہنگے سرائے سے پس لی کی پیداوار می تم
319
+ 159
320
+ انکی نظر کامال فی
321
+ 160
322
+ پرانی وتلینا چکا اورکتوصدم جائو
323
+ 161
324
+ جاپان چھٹ تے سحر کی سی مین
325
+ 162
326
+ ریاست اس نی کوئی شبہ نہیں کی جدید تصور ہے
327
+ 163
328
+ اپنے مخول کو اپنی ہیہاتوںہوتابا کنا
329
+ 164
330
+ تو کسی کی کیا مچل کے آپ کو روتے
331
+ 165
332
+ ایٹیکپ تیرا
333
+ 166
334
+ اور ہو بی کیا
335
+ 167
336
+ جب سفر کا رخی درست نام ہو تو منزہ کی امید کیسی سبا
337
+ 168
338
+ خاس طورپر ماشیش صورتحال کیکوجاسے
339
+ 169
340
+ ٹی ٹونٹی پر کپ میرے کے لئے کا آخری ورلڈ کپ و وہ شاہد فلک شکر ہے جاہانجھوکی کر کرتی
341
+ 170
342
+ کابینا کا فیصلہ حکومتی فیصلہ ہوتا ہے
343
+ 171
344
+ جینی حاصیل کرنا
345
+ 172
346
+ کہ لیے مکمل حمایت کا عظم کیا ہے
347
+ 173
348
+ پاکستان کو صحیح قیادت کی ضرورت ھے
349
+ 174
350
+ آسانی سے چیزوں سے پرشان نہیں ہوتا
351
+ 175
352
+ کیا اس بار بھی لیور شٹنگ ہو گی
353
+ 176
354
+ ان کی باتوں میں ایک خستگی اور قراری پن ہے
355
+ 177
356
+ اور جب ملک سے باہر ہوتے ہیں پاکستانی پاسپورٹ غائب گویا ڈبل مزہ
357
+ 178
358
+ انگریزی کا مطالعہ زیادہ تر مبانلق میں کیا جاتا ہے
359
+ 179
360
+ یورپی یونینیں
361
+ 180
362
+ یوں مذہب کے علمبرداروں سے ہیر کا صدور ہو رہا ہے
363
+ 181
364
+ ہم بھائی لینی ہے کلاس تھوریسی دین ہو جائے گی
365
+ 182
366
+ یہ جو کچھ ہو رہا ہے
367
+ 183
368
+ جس سے گرمی میں اضافہ ہوتا ہے
369
+ 184
370
+ چونکہ انگریز روسیوں کے خلاف تھے
371
+ 185
372
+ کان سے جی مت چراؤ
373
+ 186
374
+ توانا چلا چلا کر سے پاکی کے بادل شر ہو گئے
375
+ 187
376
+ تالین کا حملے ستیا ناف کر دیا ہے
377
+ 188
378
+ دہماقا اسے کہتے ہیں
379
+ 189
380
+ شب معاملہ کسی عدالت کے سامنے آ
381
+ 190
382
+ اہنے فلسطین جتنی دینا آج ہیں پہلے کبھی نہیں تھے
383
+ 191
384
+ بولی و بنے پاکستانی خدایت کاروں کو کویہ جانتا خالد احمد
385
+ 192
386
+ چیزنگ ان اپنے انہوں پہ خلخاری مار چکی ہو گی
387
+ 193
388
+ آسٹریلیا کی ویزا نام لوگ پاپاکستان کی بدی ورلڈ کاک نئی شکم کو
389
+ 194
390
+ جب مذہب اور قومی مفاد کی تاویل کا سوال اٹھتا ہے
391
+ 195
392
+ ایک جانا ہی پڑے گا
393
+ 196
394
+ انہیں مضامین مٹھنے کا بھی چوک ہے
395
+ 197
396
+ اور اس کی انصاف ادابوں نو تطابم کو بھی ہونا ہے
397
+ 198
398
+ جزباتی لوگوں کو نہ سمجھ پا پڑا
399
+ 199
400
+ گرمیاں آنے والی ہوں
401
+ 200
402
+ باہمی زبابری تعصب کی شدت کو کم کر دیتے ہوں
403
+ 201
404
+ خوش رنگ وہ خوش تبہ لوگ شرمن ہیں
405
+ 202
406
+ پاکستان وہ رنز کی بری حاصل قالکیٹیسٹمیچ میں پتا کی دیانت رکھتی
407
+ 203
408
+ آذربائیجان کا موسم گرما کا وقت
409
+ 204
410
+ لو انسانیت کا وہ روک دیکھا جو چھلاح لے کل بھی ڈھونڈو
411
+ 205
412
+ آپ نے اس غریب دلاتی کا وتیفہ تو سنا ہو گا
413
+ 206
414
+ پور ان کے فا جو کچھ تھا
415
+ 207
416
+ ایک بچے کی دنیا کے املوں کے گیت ھومپفی ہو
417
+ 208
418
+ اس سے بچ کر جانے ناپا ہوں
419
+ 209
420
+ یہ چین نا ممکن تھی
421
+ 210
422
+ بباں کے دخل کہنا چاہیے
423
+ 211
424
+ جسے عربی زبان نے اقاماہ کہتے ہے
425
+ 212
426
+ اس نصب کی سیاسی تربیت سمائی نسل کی تنقاری ہے
427
+ 213
428
+ اب تو کھیل ختم ہو چکا ہے
429
+ 214
430
+ ان تو کیوں رکھا گیا تھا
431
+ 215
432
+ کری ہماری بھلا تھے
433
+ 216
434
+ مجھے یاد ہوں کے لو اسے ملی کبھی دیکھا ہو
435
+ 217
436
+ ٹی کھے لیکن دیکھتے ہیں کیسا ہوتا ہوں
437
+ 218
438
+ کشمیری مزاحمت کتنا عرصہ رہتی ہے
439
+ 219
440
+ اس میں عوام کارکردگی کی بنیاد پر فیصلہ دیتے ہیں
441
+ 220
442
+ چہری چھوڑیں کھول نو کا تو ہوں
443
+ 221
444
+ ان سے سوچ میں وسعت پیدا ہوتی ہے
445
+ 222
446
+ وقت کے تقئیعوں کا بہرحال قبال پیچھے
447
+ 223
448
+ ترقخیاتی کارمو کے لیے بجت کی حتی ختم مقدس کی گئی ہے
449
+ 224
450
+ اسٹیٹ بینک کی مانیٹر پالیسی کا اعلان آج ہو گا
451
+ 225
452
+ بیماریوں وہ مبتلا ہو جاتے ہیں
453
+ 226
454
+ الونییمخوائل
455
+ 227
456
+ آپ نے امتحان کھی تیاری مکمل کر لی ہے
457
+ 228
458
+ تو پہلے کرتے
459
+ 229
460
+ اسٹاک مارکیٹ میں
461
+ 230
462
+ کوچ پور سوچیں گے
463
+ 231
464
+ تو کیا پر پائیں گے
465
+ 232
466
+ بات نے آنا
467
+ 233
468
+ یہ بھی پتاتی چلزیے
469
+ 234
470
+ تو وہ کس کا قصور ہے
471
+ 235
472
+ کوئی بات نہیں جی
473
+ 236
474
+ بلکہ کپتان بدل دے کی بجائے نظام تبدیل کرنے کی ضرورت
475
+ 237
476
+ ہم چلتے رہے بھاکھتے رہے گھومتے رہے جب تک ہماری ٹانگوں نے ہمارا ساتھ دیا
477
+ 238
478
+ اسے باہر کا راستہ دکھاؤ
479
+ 239
480
+ وہ مجھے دھار ملنے آئے
481
+ 240
482
+ سوائے ہمیں جبار مسلمان بنانے کے
483
+ 241
484
+ یہ تو ٹلکی بات ہے
485
+ 242
486
+ آبا دیگا مسئلہ ایک سماجی معاملہ ہے
487
+ 243
488
+ وہ مہت باتو نہیں ہے
489
+ 244
490
+ اپنا وقت سے آیا کرتا ہو
491
+ 245
492
+ آج ہفتے کا دن ہے
493
+ 246
494
+ ان لیڈروں کو دیکھیے
495
+ 247
496
+ کسٹومنی دورخم بارڈر پر عربوں کی کرپشن کو جوٹ کرار دی دیا
497
+ 248
498
+ اواری
499
+ 249
500
+ بڑی مدد چا یہ سدف کو گھر ہونے تک
501
+ 250
502
+ اقتدار میں اسی طرح کے موضوعات پر لیکھنی کی کو ششکیع
503
+ 251
504
+ فننے کے بعد گویا پولے
505
+ 252
506
+ ناول میں تریخی دور پر زیادہ بحث نہیں کی گئی
507
+ 253
508
+ یورپی لوگ پاگل ہوئے بیٹھے ہیں
509
+ 254
510
+ آپ کتنے بہن بائی ہو
511
+ 255
512
+ ایک سچی سیاح کی نظر سے ان مناظب کو دیکھا
513
+ 256
514
+ کارو کاروباری لوگ بھی بڑے اچھلاق ہوتے ہیں
515
+ 257
516
+ کہ جنگلات بہت جلد ختم ہو جائیں گے
517
+ 258
518
+ مجھے کھانوں کی فہرست دکھائیے
519
+ 259
520
+ مانتے ہے کہ ہر اچھائی خدا کی طرف سے ہے
521
+ 260
522
+ ویشد اب بوریت سے ہے
523
+ 261
524
+ باس ٹیوی چینل مسلسل نفرت کا کاروبار کر رہے ہیں
525
+ 262
526
+ شہریار نجم سے ٹھی ہندوستان دورے پر روانا
527
+ 263
528
+ اس بات کا لحاظ رکھنا ہے کہ کوئی جذبہ انتقام کیا
529
+ 264
530
+ اللہ پروہ ہونہ پسند ہے
531
+ 265
532
+ کشمیر میں اگر کچھ کرنا مطلوب ہے
533
+ 266
534
+ اپنے جائس موققف پہ ڈٹے رہنا چاہیے
535
+ 267
536
+ مسلن سورہ نام میں بتایا گیا ہے
537
+ 268
538
+ افواہنی گردش کر رہی ہیں
539
+ 269
540
+ مجھے خدشہ ہے کہ یہ معاملہ اگر مزید آگے بڑھتا ہے
541
+ 270
542
+ ایچ پلانٹ انجینئرنگ اکائی کمپنی نے کہا
543
+ 271
544
+ تو اچھی شام گزرے
545
+ 272
546
+ اور منہ پھٹ تبصرہ نگار کے طار پر مستقل
547
+ 273
548
+ اس کے مریض مختلف رنگ میں تمیز نہیں کر سکے
549
+ 274
550
+ ایک اور بات سمجھ میں نہیں آتی
551
+ 275
552
+ بہت کم اپنے جزباتی رت عمل کے بارے میں سوچتی ہوں
553
+ 276
554
+ اب بھی برقرار ہے
555
+ 277
556
+ موجودہ حکومت کو ایک جارحانہ اپوزیشن کا سامنا ہے
557
+ 278
558
+ ان کے دوست احباب پیسے والے لوگ ہیں
559
+ 279
560
+ اللہ کی لاٹھی بی آواز ہے
561
+ 280
562
+ جو شخص اپنے ساتھ ہی کی ڈھال استعمال کرے
563
+ 281
564
+ آراپاہوا
565
+ 282
566
+ محض اپنی خفت میڈانی کی یہ کوشش ہے
567
+ 283
568
+ پولینڈ سائیکل ریس میزبان ملک کے مائیکل کوئیٹکوس کی نے میدان ماردی
569
+ 284
570
+ نیپرا نے گزستہ سال کی مالی اور اسٹیٹ آف دی انڈسٹری ریپورٹ چاری کردی
571
+ 285
572
+ جو خرابیہ ہیں
573
+ 286
574
+ روز اقبار کھولتا ہوں
575
+ 287
576
+ خوشبو ہوا کی لہروں پر سفر کرتی ہے
577
+ 288
578
+ ہمیں سیاہ بائیں طرف چلئے
579
+ 289
580
+ شادی کے قلم سے کاگس پر اتارا ہے
581
+ 290
582
+ اسے خد سے دور رکھو
583
+ 291
584
+ روٹی اور سالن سب ختم ہو چکا ہے
585
+ 292
586
+ وہ بھی سہی نہیں ملتا
587
+ 293
588
+ ایشیا کپ پاکستان کو بھارت کے خلاف یک طرفہ مقابلے کے بعد شکست
589
+ 294
590
+ نوجوان نسل کو تم
591
+ 295
592
+ کیا وہ بھی کسی نیک مقصد کے لئے ہوالا یا زندہ ہیں
593
+ 296
594
+ اب میں مزید اس بات کو برداشت نہیں کر سکتا
595
+ 297
596
+ آج مگر زمینی حقیقت یہ ہے کہ زرداری صاحب ہی پیپلز پارٹی کے
597
+ 298
598
+ اس ائی مذہب نے بھی پلٹے سی دے تو نہیں
599
+ 299
600
+ آج کہ اس معتیت پرست معاشرے میں جانستاری کے صرف داوی کیے جاتے ہیں عمل سب کچھ کھوکلا ہے
601
+ 300
602
+ کمرے میں تمام چیزیں بکھری پڑی تھی
603
+ 301
604
+ آپ ایسا نہیں کر سکتے کیونکہ تو میں گھٹیا اور پست لازمی ہوں
605
+ 302
606
+ لو
607
+ 303
608
+ نواز شریف حق اقتدار کھو چکے ان کی حکومت نا جائز ہے
609
+ 304
610
+ میں سانس بٹنیات میں شرع کی ایک آزاد مصنفہ ہیں
611
+ 305
612
+ سخت سردی تھی اور اندھیرا بھی
613
+ 306
614
+ ٹھائی
615
+ 307
616
+ ور نہ ایسی ہی چیزیں چلتی رہیں گی
617
+ 308
618
+ اور یہ گوار تھا
619
+ 309
620
+ سیاسی لڑائی اسٹیٹس کو کہ مختلق طبقات میں ہوتی ہے
621
+ 310
622
+ میرا مجموعی تاثر یہ ہے کہ اس کا کام اچھا ہے
623
+ 311
624
+ خیالات رکھتا ہے مگر وہ حیوانات کے سات
625
+ 312
626
+ دیکھتے ہیں
627
+ 313
628
+ تمام پالیسیوں کا محور معاشی نشو نما ہونا چاہیے قائم مقام صدر ایل سی سی آئی
629
+ 314
630
+ یہ مریم نواز صاحبہ کی عوامی سیاست کا پہلا دن ہے
631
+ 315
632
+ پاکستان تو اس وقت غیر معمولی حالات سے گزر رہا ہے
633
+ 316
634
+ کانگریس کی مسلم کش پالیسیوں سے بدل ہو کر
635
+ 317
636
+ پاکستان نہ بنتا
637
+ 318
638
+ اور وہ تم پر اپنا نگران مقرر رکھتا ہے
639
+ 319
640
+ آگے کیا ہو گا
641
+ 320
642
+ ہر بے گھر کو گھر محیط کیا جائے گا
643
+ 321
644
+ اور اس دوران یہاں
645
+ 322
646
+ لیکن میں ہوں
647
+ 323
648
+ ڈنڈے والی پیر تو ہمارے ہاں بہت ہیں
649
+ 324
650
+ چیمپنزٹرافری حا کی گرین شرٹس اب ٹا پانچ کا میچ بیلجیم کے خلاف کھیلیں گے
651
+ 325
652
+ یہ صرف نامونا آنومائیشرہتئی ہے
653
+ 326
654
+ ملانا امین احسان اصلاحی جو کام تفسیر ہوں
655
+ 327
656
+ تمہاری خوشی میں میری خوشی ہے
657
+ 328
658
+ آر پھر ایک بہادرہیرو کے ذریعے آدمی میں شکست کھاتا ہے
659
+ 329
660
+ کل مسلم لیک نون کے دوست
661
+ 330
662
+ میں اپنی خائیشات کو قابو میں رکھ سکتا ہوں
663
+ 331
664
+ اس لئے کے انہیں لگتا ہے
665
+ 332
666
+ پشاور ز علمی اسلام ان ایڈ کب فائنل ٹاقرہ کراچی میں ہو گا
667
+ 333
668
+ ایسی صاب کے جج بی تھے
669
+ 334
670
+ اب یہ ونگینلمہاتانکھار دل میں محفوظ کرلیا جائیں
671
+ 335
672
+ نے نوٹ کی بکنگ اپنی انتہائی حد تک پہنچنے کے بعد بند کردی جائے گی سٹیٹ مے
673
+ 336
674
+ جنوبی امریکا
675
+ 337
676
+ انقلابی تحریکوں کی بنیان جزبہ انتقام پر ہوتی ہے
677
+ 338
678
+ اور بیدلشکتائی ہزیات کی ہے
679
+ 339
680
+ امریکہ نے ٹک ٹوک
681
+ 340
682
+ کوئی ڈالتا ہے
Eval Results/log_mozilla-foundation_common_voice_8_0_ur_test_targets.txt ADDED
@@ -0,0 +1,682 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 0
2
+ اب نیٹ پہ سن لیتے ہیں
3
+ 1
4
+ مزدور طبقے کے علاوہ سرکاری اور کاروباری لوگ نو دس بجے کام شروع کرتے
5
+ 2
6
+ جنرل مشرف جاتے ہیں
7
+ 3
8
+ دلچسپ امر یہ ہے
9
+ 4
10
+ یہ نہیں کہا جائے گا کہ زید کی طرف سے دی گئی ایک وقت کی تین طلاقیں واقع ہو گئی ہیں
11
+ 5
12
+ وقت پر رقوم کبھی بھی واپس نہ کیں
13
+ 6
14
+ ائی سی سی رینکنگ محمدعباس کی کریئر کی بہترین پوزیشن
15
+ 7
16
+ مغربی افریقہ
17
+ 8
18
+ جہاں دنیا کا سب سے اونچا
19
+ 9
20
+ ایسا ہو گا
21
+ 10
22
+ پھر کیا ہو گا
23
+ 11
24
+ گورننس کا سب سے اہم پہلو مو جود نظام کی اصلاح ہے
25
+ 12
26
+ حکومت سے بہت خوش نہیں تھے
27
+ 13
28
+ اگر ان سے ملاقات ہو تو میری طرف سے سلام عرض کیجیے گا
29
+ 14
30
+ یہی خزاں اور سردیوں کے مہینے ہیں
31
+ 15
32
+ کہ ان کے اندر سورج کی روشنی پہنچتی رہے
33
+ 16
34
+ ماحولیاتی آلودگی اور پوری دنیا کے بڑھتے ہوئے درجہ حرارت
35
+ 17
36
+ عقلمند کو اشارہ ہی کافی
37
+ 18
38
+ عروہ اور فرحان برلن میں کیا کررہے ہیں
39
+ 19
40
+ دو ٹیمیں بنائی گئیں
41
+ 20
42
+ میں نے سوچا مجھے اسے کسی پبلک مقام پر ملنا چاہیے
43
+ 21
44
+ نواز شریف سیاست میں کیسے کامیاب ہوئے
45
+ 22
46
+ کہ مشروبات ٹھنڈا کرنے کے لئے ریفریجریٹرز کا ماحول دشمن طریقہ ترک کیاجائے
47
+ 23
48
+ کیسے آنے والی دہائیوں میں صلیبی
49
+ 24
50
+ وہاں جھڑپیں جاری ہوں
51
+ 25
52
+ ائی ایم ایف کا عرب ممالک پر اضافی اخراجات کم کرنے پر زور
53
+ 26
54
+ اب سنا ہے
55
+ 27
56
+ سی پیک تیزی سے عملی صورت اختیار کرچکا ہے سرتاج عزیز
57
+ 28
58
+ ہمارا پرابلم کیا ہے
59
+ 29
60
+ ملکی معیشت کی بدلتی صورتحال اور استحکام کی وجوہات کیا ہیں
61
+ 30
62
+ برصغیرکے مسلمانوں میں بھی ایسے لوگ پائے جاتے ہیں
63
+ 31
64
+ جب جمہوریت کی بات ہوتی ہے
65
+ 32
66
+ وہ بھی مسلمان ملک ہے
67
+ 33
68
+ تو قادری صاحب کے لوگ بھرم رکھنے کے لیے موجود ہیں
69
+ 34
70
+ تو ایسی کہانی میں
71
+ 35
72
+ اہل خانہ نے ان کی
73
+ 36
74
+ ہم شیشے کی منڈی کو اندر سے دیکھنا چاہتے ہیں نہ کہ باہر سے
75
+ 37
76
+ فنکار اپنا معمول رکھتا ہے
77
+ 38
78
+ ان کے ساتھی پروپیگنڈا کے ماہر ہیں
79
+ 39
80
+ باغ تو اب برائے نام ہی رہ گیا ہے
81
+ 40
82
+ دوسروں پر جوابی کروائئ کرتا ہوں
83
+ 41
84
+ میں شائد یہ کروں
85
+ 42
86
+ کہا جاتا ہے کہ ڈان لیکس محض ایک راونڈ تھا
87
+ 43
88
+ جسک باعث اس پھل پھول کا موقعہ
89
+ 44
90
+ نہ صرف یہ کہ جمود ہے
91
+ 45
92
+ ہمارے مسائل کیا ہیں
93
+ 46
94
+ تو اس میں سعودی عرب کا حصہ ہے
95
+ 47
96
+ دوسرے الفاظ میں وہ ریاست کے اندر اپنی ایک الگ ریاست بنانے کا اعلان کر رہا ہوتا ہے
97
+ 48
98
+ اس کا مطلب یہ ہے
99
+ 49
100
+ دائرہ اسلام سے خارج قرار دیا ہے
101
+ 50
102
+ ان میں سب سے اہم وژن اور اس کے بعد قوت نافذہ ہے
103
+ 51
104
+ ووٹ چوری نہ کر سکنے کی تکلیف ان کو بہت دور تک پہنچی ہے
105
+ 52
106
+ کیمیا دان اس دور میں حیران کن چیز تیارکررہے ہیں
107
+ 53
108
+ تاریخ نے جمہوریت کے حق میں اپنا فیصلہ سنا دیا ہے
109
+ 54
110
+ اصل نام یوسف پٹھان ہے
111
+ 55
112
+ اب تک تو ان کے سامنے کوئی نقشہ ہونا چاہئے تھا
113
+ 56
114
+ اور جسم بھی تپ رہا ہے
115
+ 57
116
+ یہ تو اس خطے میں پہنا جاتا ہے
117
+ 58
118
+ گویا آسمان سے آنے والی صدا اسی طرح گونجتی رہے گی
119
+ 59
120
+ یزید ثانی کا دور بنوامیہ کا بدترین دور تھا
121
+ 60
122
+ گویا یہ ان کی فطری کیفیت لگتی تھی
123
+ 61
124
+ کیا آج کا ادیب ا ور شاعر اس روایت سے وابستہ ہے
125
+ 62
126
+ وہ سوائے شکایت کے اور کچھ نہیں کرتا
127
+ 63
128
+ اب اس تصویر پر لے دے ہو رہی ہے اور متعلقہ ایڈ ا
129
+ 64
130
+ یہاں سے چلے جائیں ورنہ ہم اپ کو تھپڑ مار دیں گے
131
+ 65
132
+ عام میل جول میں نیر ندیم صاحب انتہائی حلیم الطبع اور منکسر المزاج ہیں
133
+ 66
134
+ یہاں عروج وزوال کا قانون کیا ہے
135
+ 67
136
+ ایک خاص اخلاقی شعور کے ساتھ زندگی گزارے
137
+ 68
138
+ اور انہیں زمین کی طرف دوبارہ سے خارج کردیتے ہیں
139
+ 69
140
+ زیادہ سے زیادہ دو برس کے اندر اس منصوبے کو تکمیل تک پہنچانا چاہیے
141
+ 70
142
+ پرانی طرز کا کوئی سیاست دان ہو گا
143
+ 71
144
+ یہی جناح صاحب کی ہے
145
+ 72
146
+ اس نے مدد کی ہر پیشکش ٹھکرادی
147
+ 73
148
+ کے لئے اپنی اپنی عبادت گاہوں کو جا رہے ہوتے ہیں
149
+ 74
150
+ جنوبی کوریا
151
+ 75
152
+ قانون یہاں بھی ہے
153
+ 76
154
+ ان کے باب میں تاریخ پر انحصار نہیں کیا جائے گا
155
+ 77
156
+ اس میں سر فہرست بادشاہ ہیں
157
+ 78
158
+ ایک وجہ اس دور کا سیاسی نظام تھا
159
+ 79
160
+ آئرلینڈ کے خلاف صرف ایک میچ
161
+ 80
162
+ کسی کو پتہ نہیں
163
+ 81
164
+ باہر انتظار کرو
165
+ 82
166
+ ا یکس پی کا مارکیٹ شیئر دو فی صد جبکہ ونڈوز ایٹ کا دو فی صد تھا
167
+ 83
168
+ جو چہیتے تھے
169
+ 84
170
+ ہاکی چیمپئنز ٹرافی بیلجیئم نے پاکستان کودو کے مقابلے میں چار گول سے شکست دے دی
171
+ 85
172
+ اپنے ضمیر کی آواز کو سنتا ہوں
173
+ 86
174
+ مارچ سے شروع ہوکر جون تک
175
+ 87
176
+ سفر نامے میں یہ تعداد قلیل ہے
177
+ 88
178
+ کیمرون
179
+ 89
180
+ تم تو پسینے سے پورے بھیگ گئے
181
+ 90
182
+ ہم سڑک پر بیٹھ گے
183
+ 91
184
+ مسلک دیوبندکے کام کا انداز فطری ہے
185
+ 92
186
+ امریکی باکسر فلوئیڈمے ویدر کمائی میں سب پر بازی لے گئے
187
+ 93
188
+ صوتی چھٹائی کی ترتیب
189
+ 94
190
+ اس کی ہمت ان پارٹیوں میں نہیں تھی
191
+ 95
192
+ معاملات ان سے نمٹائے نہیں جا رہے
193
+ 96
194
+ اپنا ذہن نہیں بنا سکتا
195
+ 97
196
+ تو مرتے وقت تک اس کو نبھانا پڑتا ہے
197
+ 98
198
+ بات سویلین بالا دستی کی کرتے ہیں
199
+ 99
200
+ سنیل گواسکر پوری بات
201
+ 100
202
+ روپے کی قدر میں کمی سے مہنگائی بڑھے گی غیاث پراچہ
203
+ 101
204
+ کچھ کرنے سے قاصر تھے
205
+ 102
206
+ ہر بار یہ گمان ٹوٹا
207
+ 103
208
+ امریکا یورپ اور
209
+ 104
210
+ اب نکلنا ہے تو اس نقل مکانی سے نکل
211
+ 105
212
+ یہ اپروچ غلط ہے
213
+ 106
214
+ یہ میں نے اپنے سے لکھا ہے
215
+ 107
216
+ میں اس وقت ایک پتھر پر بیٹھا ہوں جو میرے حجم سے تقریبا گنا بڑ اہو گا
217
+ 108
218
+ پھر طالبان نے اسکا
219
+ 109
220
+ پر منایا جانے لگا سوائے امریکہ
221
+ 110
222
+ اسٹوریائی
223
+ 111
224
+ بھارت میں انتہا پسندی بڑھے گی
225
+ 112
226
+ نجانے کیوں مجھے ان بچوں میں اپنا بچپن نظر آ رہا تھا
227
+ 113
228
+ ہم کن اندھیروں میں پھنسے ہوئے ہیں
229
+ 114
230
+ پشاورشہید بے نظیر بھٹو یونیورسٹی میں ووشو چیمپئن شپ کا انعقاد
231
+ 115
232
+ سروج خان بالی وڈ
233
+ 116
234
+ جنوبی افریقہ میں غالبا نسل پرست حکومت
235
+ 117
236
+ جن کی کارکردگی کا معیار گرگیا اور اس کے علاوہ اور بھی بہت کچھ ہمارے قارئین جان چکے ہیں
237
+ 118
238
+ دروازہ کھولنے کا فیصلہ تو ہمیں خود کرنا ہوتا ہے
239
+ 119
240
+ اسی طرح سماجی حوالے سے وہ ایک پدر سرانہ سماج تھا
241
+ 120
242
+ سب کو ایک ہی برتن میں انڈیل کر پھینٹنا شروع کردی
243
+ 121
244
+ وہ بھی پوری ہو جائے
245
+ 122
246
+ اسٹریلین کھلاڑی نے مجھے اسامہ کہہ کر پکارا معین علی کا دعوی
247
+ 123
248
+ انہی کی نسل میں نبوت رہی
249
+ 124
250
+ جو اس نے کیا وہ ایسے تھا جیسے قانون کو اپنے ہاتھوں میں لینا
251
+ 125
252
+ عام فوجی نمازی ہو
253
+ 126
254
+ تو ان کے خلاف مقدمات کا فیصلہ کیوں نہیں ہو رہا
255
+ 127
256
+ اور بعض مسلمان سمجھتے ہیں
257
+ 128
258
+ وہ بے وفا ثابت ہوا
259
+ 129
260
+ برونڈی
261
+ 130
262
+ تو یہاں کے عوام کے دروازے ان کے لیے بھی کھلے ہیں
263
+ 131
264
+ مجھے ٹھیک سے نہیں پتا
265
+ 132
266
+ یہ مزارات صدیوں سے مراکز تجلیات و مرجع خلائق ہیں
267
+ 133
268
+ اب تو حالت یہاں تک جا پہنچی ہے کہ عدلیہ کے
269
+ 134
270
+ کھارے پانی کو استعمال کے قابل بنانے والے پلانٹ کا افتتاح کیا ہے
271
+ 135
272
+ تو وہ اب ہے
273
+ 136
274
+ اور اس قیمت کو پاکستانی روپیہ تصور کر سکتے ہیں
275
+ 137
276
+ یہاں کے لوگ سیاحوں کو بہت پسند کرتے ہیں
277
+ 138
278
+ میدان سیاست میں کتنے بڑے نام رہے
279
+ 139
280
+ سائنس کی زبان میں بات کریں
281
+ 140
282
+ ڈیگال نے کہا تھا سارتر فرانس ہے
283
+ 141
284
+ عزم کی مضبوطی کے ساتھ اپنا وقت گزارو
285
+ 142
286
+ کہ ان طاقتوں کے وابستہ ہونے سے کوئی انسان بھی مستثنی نہیں ہے
287
+ 143
288
+ ہمیں اسی جذبے کے ساتھ اس معاملے کو دیکھنا ہو گا
289
+ 144
290
+ ایک بیان کے بعد کشیدگی آگئی ہے
291
+ 145
292
+ کوئٹہ مقامی ہوٹل کی جانب سے طلبہ کو تیراکی سکھائی گئی
293
+ 146
294
+ اور چارجنگ کے بعد استعمال ہو والے گھنٹہ کی صحیح تعداد بتا ہیں
295
+ 147
296
+ آزادی کے ہیروزکا تذکرہ ہو تا ہے
297
+ 148
298
+ نیوزی لینڈ کرکٹ بورڈ نے ٹیم پاکستان بھیجنے سے انکار کر دیا
299
+ 149
300
+ ڈھاکہ میں نواب سیلم خان کی ایک پارٹی
301
+ 150
302
+ سب ٹھیک ہے
303
+ 151
304
+ عالمی بازار سمیت پاکستان میں بھی سونے کی قیمت پھر بڑھ گئی
305
+ 152
306
+ اب میں ان بر گر اور پیپسی خوروں کو کیسے سمجھاتا کہ میٹھا آملیٹ ہونے کے لئے سننا کوئی ضروری تھوڑی ہے
307
+ 153
308
+ یہی صورتحال سوشل میڈیا کی ہے
309
+ 154
310
+ علما اسی حیثیت سے فتوی دیتے ہیں اور عوام الناس اسی اعتبار سے اسے قبول کرتے ہیں
311
+ 155
312
+ ہی پرندوں کے ساتھ ساتھ
313
+ 156
314
+ گائے بکرے اونٹ میمنےاور دودھ دینے والے دیگر جانوروں سے حاصل ہونے والے گوشت کو سرخ گوشت کہا جاتا ہے
315
+ 157
316
+ اسکینگ فری رائیڈ مقابلے امریکا کے سیمی لیوبک فاتح قرار
317
+ 158
318
+ بجلی کے نئے ذرائع کے استعمال سےپیداوار میں اضافہمہنگےذرائع سے بجلی کی پیداوار میں کمی
319
+ 159
320
+ ان کی نظر کمال تھی
321
+ 160
322
+ پرانے بدلے نہ چکاواور دوست بن جاو
323
+ 161
324
+ جاپان چڑھتے سورج کی سرزمین
325
+ 162
326
+ ریاست اس میں کوئی شبہ نہیں کہ ایک جدید تصور ہے
327
+ 163
328
+ اپنے ماحول کو اپنے ہی ہاتھوں تباہ کرنا
329
+ 164
330
+ تو کسی کی کیا مجال کہ آپ کو روکے
331
+ 165
332
+ پارٹی کب دے رہے ہو
333
+ 166
334
+ اور ہوبھی کیوں
335
+ 167
336
+ جب سفر کا رخ ہی درست نہ ہو تو منزل کی امید کیسی
337
+ 168
338
+ خاص طورپہ معاشی صورتحال کی وجہ سے
339
+ 169
340
+ ٹی ٹونٹی ورلڈکپ ءمیرے کیریئر کا خری ورلڈ کپ ہو گا شاہد فریدی
341
+ 170
342
+ کابینہ کا فیصلہ حکومتی فیصلہ ہوتا ہے
343
+ 171
344
+ جنہیں حاصل کرنا
345
+ 172
346
+ کے لیے مکمل حمایت کا عزم کیا ہے
347
+ 173
348
+ پاکستان کو صحیح قیادت کی ضرورت ہے
349
+ 174
350
+ آسانی سے چیزوں سے پریشان نہیں ہوتا
351
+ 175
352
+ کیا اس بار بھی لوڈشیڈنگ ہوگی
353
+ 176
354
+ ان کی باتوں میں ایک خستگی اور کرارا پن ہے
355
+ 177
356
+ اور جب ملک سے باہر ہوتے ہیں پاکستانی پاسپورٹ غایب گویا ڈبل مزہ
357
+ 178
358
+ انگریزی کا مطالعہ زیادہ تر ممالک میں کیا جاتا ہے
359
+ 179
360
+ یوروپی یونین
361
+ 180
362
+ یوں مذہب کے علمبرداروں سے خیر کا صدور ہو رہا ہے
363
+ 181
364
+ ہا بہائی لینی ہے کلاس تھوڑی سی دیر ہو جائے گی
365
+ 182
366
+ یہ جو کچھ ہو رہا ہے
367
+ 183
368
+ جس سے گرمی میں اضافہ ہوتا ہے
369
+ 184
370
+ چونکہ انگریز روسیوں کے خلاف تھے
371
+ 185
372
+ کام سے جی مت چراو
373
+ 186
374
+ تلوار چلا چلا کر سپاہی کے بازو شل ہوگئے
375
+ 187
376
+ تعلیم کا ہم نے ستیاناس کر دیا ہے
377
+ 188
378
+ دھماکہ اسے کہتے ہیں
379
+ 189
380
+ جب معاملہ کسی عدالت کے سامنے آئے
381
+ 190
382
+ اہل فلسطین جتنے تنہا آج ہیں پہلے کبھی نہیں تھے
383
+ 191
384
+ بولی وڈ میں پاکستانی ہدایتکاروں کو کوئی نہیں جانتا خالد احمد
385
+ 192
386
+ کیوی اننگز اپنے پاوں پہ کلہاڑی مار چکی ہوگی
387
+ 193
388
+ اسٹریلیاکے ویزے نہ ملنے پر پاکستان کی کبڈی ورلڈ کپ میں شرکت مشکوک
389
+ 194
390
+ جب مذہب اور قومی مفاد کی تاویل کا سوال اٹھتا ہے
391
+ 195
392
+ پھر جانا ہی پڑے گا
393
+ 196
394
+ انہیں مضامین لکھنے کا بھی شوق ہے
395
+ 197
396
+ اوراس کے ساتھ اداروں میں تصادم کو بھی روکنا ہے
397
+ 198
398
+ جذباتی لوگوں کو نہیں سمجھ پاتا
399
+ 199
400
+ گرمیاں آنے والی ہیں
401
+ 200
402
+ باہمی روابط تعصب کی شدت کو کم کر دیتے ہیں
403
+ 201
404
+ خوش رنگ و خوش طبع لوگ جمع ہیں
405
+ 202
406
+ پاکستان نے رنز کی برتری حاصل کر کے ٹیسٹ میچ میں فتح کی بنیاد رکھ دی
407
+ 203
408
+ آذربائیجان کا موسم گرما کا وقت
409
+ 204
410
+ میں نے انسانیت کا وہ روپ دیکھا جو چراغ لے کر بھی ڈھونڈو
411
+ 205
412
+ آپ نے اس غریب دیہاتی کا وہ لطیفہ تو سنا ہو گا
413
+ 206
414
+ اور ان کے پاس جو کچھ تھا
415
+ 207
416
+ ایک بچے کی دنیا کھلونوں کے گرد گھومتی ہے
417
+ 208
418
+ اسے بچ کر جانے نہ پائے
419
+ 209
420
+ یہ چیز ناممکن تھی
421
+ 210
422
+ ببانگ دہل کہنا چاہیے
423
+ 211
424
+ جسے عربی زبان میں اقامہ کہتے ہیں
425
+ 212
426
+ اس نسل کی سیاسی تربیت ہماری نسل کی ذمہ داری ہے
427
+ 213
428
+ اب تو کھیل ختم ہوچکا ہے
429
+ 214
430
+ ان کو کیوں رکھا گیا تھا
431
+ 215
432
+ کرے ہماری بلا سے
433
+ 216
434
+ مجھے یاد نہیں کہ میں نے اسے پہلے کبھی دیکھا ہو
435
+ 217
436
+ ٹھیک ہے لیکن دیکھتے ہیں کیسا ہوتا ہے
437
+ 218
438
+ کشمیری مزاحمت کتنا عرصہ رہتی ہے
439
+ 219
440
+ اس میں عوام کارکردگی کی بنیاد پر فیصلہ دیتے ہیں
441
+ 220
442
+ چہرے چھوڑیں کوئی نئے افکار تو ہوں
443
+ 221
444
+ علم سے سوچ میں وسعت پیدا ہوتی ہے
445
+ 222
446
+ وقت کے تغیر کا بہرحال کمال دیکھیے
447
+ 223
448
+ ترقیاتی کاموں کے لیے بجٹ کی خطیر رقم مختص کی گئی ہے
449
+ 224
450
+ اسٹیٹ بینک کی مانیٹری پالیسی کا اعلان اج ہوگا
451
+ 225
452
+ بیماریوں میں مبتلا ہوجاتے ہیں
453
+ 226
454
+ ایلومینیم فوائل
455
+ 227
456
+ آپ نے امتحان کی تیاری مکمل کر لی ہے
457
+ 228
458
+ تو پہلے کرتے
459
+ 229
460
+ سٹاک مارکیٹ میں
461
+ 230
462
+ کچھ اور سوچیں گے
463
+ 231
464
+ تو کیا کر پائیں گے
465
+ 232
466
+ بعد میں آنا
467
+ 233
468
+ یہ بھی بتاتے چلیں
469
+ 234
470
+ تو وہ کس کا قصور ہے
471
+ 235
472
+ کوئی بات نہیں جی
473
+ 236
474
+ بلکہ کپتان بدلنے کے بجائے نظام تبدیل کرنے کی ضرورت
475
+ 237
476
+ ہم چلتے رہے بھاگتے رہے گھومتے رہے جب تک ہماری ٹانگوں نے ہمارا ساتھ دیا
477
+ 238
478
+ اسے باہر کا راستہ دکھاو
479
+ 239
480
+ وہ مجھے گھر ملنے آئے
481
+ 240
482
+ سوائے ہمیں دوبارہ مسلمان بنانے کے
483
+ 241
484
+ یہ تو کل کی بات ہے
485
+ 242
486
+ آبادی کا مسئلہ ایک سماجی معاملہ ہے
487
+ 243
488
+ وہ بہت باتونی ہے
489
+ 244
490
+ اپنا وقت ضائع کرتا ہوں
491
+ 245
492
+ آج ہفتے کا دن ہے
493
+ 246
494
+ ان لیڈروں کو دیکھیے
495
+ 247
496
+ کسٹم نے طورخم بارڈر پر اربوں کی کرپشن کو جھوٹ قرار دے دیا
497
+ 248
498
+ اواری
499
+ 249
500
+ بڑی مدت چاہیے صدف کو گہر ہونے تک
501
+ 250
502
+ ابتدا میں اسی طرح کے موضوعات پر لکھنے کی کوشش کی
503
+ 251
504
+ سننے کے بعد گویا ہوئے
505
+ 252
506
+ ناول میں تاریخی دور پر زیادہ بحث نہیں کی گئی
507
+ 253
508
+ یورپی لوگ پاغل ہوئے بیٹھے ہیں
509
+ 254
510
+ آپ کتنے بہن بھائی ہو
511
+ 255
512
+ ایک سچے سیاح کی نظر سے ان مناظر کو دیکھا
513
+ 256
514
+ کاروباری لوگ بھی بڑے چالاک ہوتے ہیں
515
+ 257
516
+ کہ جنگلات بہت جلدختم ہو جائیں گے
517
+ 258
518
+ مجھے کھانوں کی فہرست دکھائیے
519
+ 259
520
+ مانتے ہیں کہ ہر اچھائی خدا کی طرف سے ہے
521
+ 260
522
+ وحشت اب بوریت سے ہے
523
+ 261
524
+ بعض ٹی وی چینلز مسلسل نفرت کا کاروبار کر رہے ہیں
525
+ 262
526
+ شہریار نجم سیٹھی ہندوستان دورے پر روانہ
527
+ 263
528
+ اس بات کا لحاظ رکھنا ہے کہ کوئی جذبہ انتقام یا
529
+ 264
530
+ لا پرواہ ہونا پسند ہے
531
+ 265
532
+ کشمیر میں اگر کچھ کرنا مطلوب ہے
533
+ 266
534
+ اپنے جائز موقف پہ ڈٹے رہنا چاہیے
535
+ 267
536
+ مثلاً سورہ انعام میں بتایا گیا ہے
537
+ 268
538
+ افواہیں گردش کررہی ہیں
539
+ 269
540
+ مجھے خدشہ ہے کہ یہ معاملہ اگر مزید آگے بڑھتا ہے
541
+ 270
542
+ ایچ پلانٹ انجینیرنگ اکائی کمپنی نے کہا
543
+ 271
544
+ تو اچھی شام گزرے
545
+ 272
546
+ اور منہ پھٹ تبصرہ نگار کے طور پر مستحکم
547
+ 273
548
+ اس کے مریض مختلف رنگ میں تمیز نہیں کر سکہ
549
+ 274
550
+ ایک اور بات سمجھ میں نہیں آتی
551
+ 275
552
+ بہت کم اپنی جذباتی رد عمل کے بارے میں سوچتا ہوں
553
+ 276
554
+ اب بھی برقرار ہے
555
+ 277
556
+ موجودہ حکومت کو ایک جارحانہ اپوزیشن کا سامنا ہے
557
+ 278
558
+ ان کے دوست احباب پیسے والے لوگ ہیں
559
+ 279
560
+ اللہ کی لاٹھی بے آواز ہے
561
+ 280
562
+ جو شخص اپنے ساتھی کی ڈھال استعمال کرے
563
+ 281
564
+ اراپاہو
565
+ 282
566
+ محض اپنی خفت مٹانے کی یہ کوشش ہے
567
+ 283
568
+ پولینڈ سائیکل ریس میزبان ملک کے مائیکل کویٹکوسکی نے میدان مار لیا
569
+ 284
570
+ نیپرا نے گزشتہ سال کی مالی اور اسٹیٹ اف دی انڈسٹری رپورٹ جاری کر دی
571
+ 285
572
+ جو خرابیاں ہیں
573
+ 286
574
+ روز اخبار کھولتا ہوں
575
+ 287
576
+ خوشبو ہوا کی لہروں پر سفر کرتی ہے
577
+ 288
578
+ ہمیشہ بائیں طرف چلئے
579
+ 289
580
+ شاعری کے قلم سے کاغذ پر اتارا ہے
581
+ 290
582
+ اسے خود سے دور رکھو
583
+ 291
584
+ روٹی اور سالن سب ختم ہو چکا ہے
585
+ 292
586
+ وہ بھی صحیح نہیں ملتا
587
+ 293
588
+ ایشیا کپ پاکستان کو بھارت کے خلاف یکطرفہ مقابلے کے بعد شکست
589
+ 294
590
+ نوجوان نسل کو تم
591
+ 295
592
+ کیا وہ بھی کسی نیک مقصد کے لیے حو��لہ زنداں ہیں
593
+ 296
594
+ اب میں مزیداس بات کو برداشت نہیں کرسکتا
595
+ 297
596
+ آج مگر زمینی حقیقت یہ ہے کہ زرداری صاحب ہی پیپلزپارٹی کے
597
+ 298
598
+ عیسائی مذہب میں بھی الٹے سیدھے تو نہیں
599
+ 299
600
+ آج کے اس مادیت پرست معاشرے میں جاں نثاری کے صرف دعوے کیے جاتے ہیں عملاً سب کچھ کھوکھلا ہے
601
+ 300
602
+ کمرے میں تمام چیزیں بکھری پڑی تھیں
603
+ 301
604
+ آپ ایسا نہیں کر سکتے کیونکہ تم ایک گھٹیا اور پزدل آدمی ہو
605
+ 302
606
+ لو
607
+ 303
608
+ نوازشریف حق اقتدار کھو چکے ان کی حکومت ناجائز ہے
609
+ 304
610
+ مس اینسروڈ نیو یارک میں شراب کی ایک آزاد مصنفہ ہیں
611
+ 305
612
+ سخت سردی تھی اور اندھیرا بھی
613
+ 306
614
+ تھائی
615
+ 307
616
+ ورنہ ایسے ہی چیزیں چلتی رہیں گی
617
+ 308
618
+ اور یہ گنوار تھا
619
+ 309
620
+ سیاسی لڑائی سٹیٹس کو کے مختلف طبقات میں ہوتی ہے
621
+ 310
622
+ میرا مجموعی تاثر یہ ہے کہ اس کا کام اچھا ہے
623
+ 311
624
+ خیالات رکھتا ہے مگر وہ حیوانات کے ساتھ
625
+ 312
626
+ دیکھتے ہیں
627
+ 313
628
+ تمام پالیسیوں کا محور معاشی نشوونما ہونا چاہیے قائم مقام صدر ایل سی سی ائی
629
+ 314
630
+ یہ مریم نواز صاحبہ کی عوامی سیاست کا پہلا دن ہے
631
+ 315
632
+ پاکستان تو اس وقت غیر معمولی حالات سے گزر رہا ہے
633
+ 316
634
+ کانگریس کی مسلم کش پالیسیوں سے بددل ہوکر
635
+ 317
636
+ پاکستان نہ بنتا
637
+ 318
638
+ اور وہ تم پر اپنے نگران مقرر رکھتا ہے
639
+ 319
640
+ آگے کیا ہوگا
641
+ 320
642
+ ہر بے گھر کو گھر مہیا کیا جائے گا
643
+ 321
644
+ اور اس دوران یہاں
645
+ 322
646
+ لیکن میں ہوں
647
+ 323
648
+ ڈنڈے والے پیر تو ہمارے ہاں بہت ہیں
649
+ 324
650
+ چیمپئنز ٹرافی ہاکی گرین شرٹس اپنا پانچواں میچ بیلجیئم کیخلاف کھیلیں گے
651
+ 325
652
+ یہ صرف نمونہ اور نمائش رہ گئی ہے
653
+ 326
654
+ مو لا نا امین احسن اصلاحی نے جو کام تفسیر میں
655
+ 327
656
+ تمہاری خوشی میں میری خوشی ہے
657
+ 328
658
+ اور پھر ایک بہادر ہیرو کے ذریعہ آدمی میں شکست کھاتا ہے
659
+ 329
660
+ کل مسلم لیگ ن کے دوست
661
+ 330
662
+ میں اپنی خواہشات کو قابو میں رکھ سکتا ہوں
663
+ 331
664
+ اس لئے کہ انہیں لگتا ہے
665
+ 332
666
+ پشاور زلمی اور اسلام اباد یونائیٹڈ کا فائنل ٹاکرا کراچی میں ہو گا
667
+ 333
668
+ احتساب کے جج بھی تھے
669
+ 334
670
+ اور یہ رنگین لمحات آنکھوں اور دل میں محفوظ کر لیا جائیں
671
+ 335
672
+ نئے نوٹوں کی بکنگ اپنی انتہائی حد تک پہنچنے کے بعد بند کر دی جائے گی اسٹیٹ بینک
673
+ 336
674
+ جنوبی امریکہ
675
+ 337
676
+ انقلابی تحریکوں کی بنیاد جذبہ انتقام پر ہوتی ہے
677
+ 338
678
+ اور بے دل شکاری حضرات کی بے
679
+ 339
680
+ امریکہ نے ٹک ٹوک
681
+ 340
682
+ کوئی ڈالتا ہے
Eval Results/mozilla-foundation_common_voice_8_0_ur_test_eval_results.txt ADDED
@@ -0,0 +1,2 @@
 
 
1
+ WER: 0.39896373056994816
2
+ CER: 0.16700201207243462
Model.dvc ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ outs:
2
+ - md5: 9992efe900364056bcd351f0eacf5bc1.dir
3
+ size: 1427872117
4
+ nfiles: 12
5
+ path: Model
eval.py ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+ import re
4
+ from typing import Dict
5
+
6
+ import torch
7
+ from datasets import Audio, Dataset, load_dataset, load_metric
8
+
9
+ from transformers import AutoFeatureExtractor, pipeline
10
+
11
+
12
+ def log_results(result: Dataset, args: Dict[str, str]):
13
+ """DO NOT CHANGE. This function computes and logs the result metrics."""
14
+
15
+ log_outputs = args.log_outputs
16
+ dataset_id = "_".join(args.dataset.split("/") + [args.config, args.split])
17
+
18
+ # load metric
19
+ wer = load_metric("wer")
20
+ cer = load_metric("cer")
21
+
22
+ # compute metrics
23
+ wer_result = wer.compute(references=result["target"], predictions=result["prediction"])
24
+ cer_result = cer.compute(references=result["target"], predictions=result["prediction"])
25
+
26
+ # print & log results
27
+ result_str = f"WER: {wer_result}\n" f"CER: {cer_result}"
28
+ print(result_str)
29
+
30
+ with open(f"{dataset_id}_eval_results.txt", "w") as f:
31
+ f.write(result_str)
32
+
33
+ # log all results in text file. Possibly interesting for analysis
34
+ if log_outputs is not None:
35
+ pred_file = f"log_{dataset_id}_predictions.txt"
36
+ target_file = f"log_{dataset_id}_targets.txt"
37
+
38
+ with open(pred_file, "w") as p, open(target_file, "w") as t:
39
+
40
+ # mapping function to write output
41
+ def write_to_file(batch, i):
42
+ p.write(f"{i}" + "\n")
43
+ p.write(batch["prediction"] + "\n")
44
+ t.write(f"{i}" + "\n")
45
+ t.write(batch["target"] + "\n")
46
+
47
+ result.map(write_to_file, with_indices=True)
48
+
49
+
50
+ def normalize_text(text: str) -> str:
51
+ """DO ADAPT FOR YOUR USE CASE. this function normalizes the target text."""
52
+
53
+ chars_to_ignore_regex = """[\!\؛\،\٫\؟\۔\٪\"\'\:\-\‘\’]""" # noqa: W605 IMPORTANT: this should correspond to the chars that were ignored during training
54
+
55
+ text = re.sub(chars_to_ignore_regex, "", text.lower())
56
+ text = re.sub("[،]", '', text)
57
+ text = re.sub("[؟]", '', text)
58
+ text = re.sub("['َ]", '', text)
59
+ text = re.sub("['ُ]", '', text)
60
+ text = re.sub("['ِ]", '', text)
61
+ text = re.sub("['ّ]", '', text)
62
+ text = re.sub("['ٔ]", '', text)
63
+ text = re.sub("['ٰ]", '', text)
64
+ # batch["sentence"] = re.sub("[ء]", '', batch["sentence"])
65
+ # batch["sentence"] = re.sub("[آ]", 'ا', batch["sentence"])
66
+ text = re.sub("[ۂ]", 'ہ', text)
67
+ text = re.sub("[ي]", "ی",text)
68
+ text = re.sub("[ؤ]", "و", text)
69
+ # batch["sentence"] = re.sub("[ئ]", 'ى', batch["sentence"])
70
+ text = re.sub("[ى]", 'ی', text)
71
+ text = re.sub("[۔]", '', text)
72
+
73
+ # In addition, we can normalize the target text, e.g. removing new lines characters etc...
74
+ # note that order is important here!
75
+ token_sequences_to_ignore = ["\n\n", "\n", " ", " "]
76
+
77
+ for t in token_sequences_to_ignore:
78
+ text = " ".join(text.split(t))
79
+
80
+ return text
81
+
82
+
83
+ def main(args):
84
+ # load dataset
85
+ dataset = load_dataset(args.dataset, args.config,delimiter="\t",split=args.split, use_auth_token=True)
86
+
87
+ # for testing: only process the first two examples as a test
88
+ # dataset = dataset.select(range(10))
89
+
90
+ # load processor
91
+ feature_extractor = AutoFeatureExtractor.from_pretrained(args.model_id)
92
+ sampling_rate = feature_extractor.sampling_rate
93
+
94
+ # resample audio
95
+ dataset = dataset.cast_column("audio", Audio(sampling_rate=sampling_rate))
96
+
97
+ # load eval pipeline
98
+ if args.device is None:
99
+ args.device = 0 if torch.cuda.is_available() else -1
100
+ asr = pipeline("automatic-speech-recognition", model=args.model_id, device=args.device)
101
+
102
+ # map function to decode audio
103
+ def map_to_pred(batch):
104
+ prediction = asr(
105
+ batch["audio"]["array"], chunk_length_s=args.chunk_length_s, stride_length_s=args.stride_length_s
106
+ )
107
+
108
+ batch["prediction"] = prediction["text"]
109
+ batch["target"] = normalize_text(batch["sentence"])
110
+ return batch
111
+
112
+ # run inference on all examples
113
+ result = dataset.map(map_to_pred, remove_columns=dataset.column_names)
114
+
115
+ # compute and log_results
116
+ # do not change function below
117
+ log_results(result, args)
118
+
119
+
120
+ if __name__ == "__main__":
121
+ parser = argparse.ArgumentParser()
122
+
123
+ parser.add_argument(
124
+ "--model_id", type=str, required=True, help="Model identifier. Should be loadable with 🤗 Transformers"
125
+ )
126
+ parser.add_argument(
127
+ "--dataset",
128
+ type=str,
129
+ required=True,
130
+ help="Dataset name to evaluate the `model_id`. Should be loadable with 🤗 Datasets",
131
+ )
132
+ parser.add_argument(
133
+ "--config", type=str, required=True, help="Config of the dataset. *E.g.* `'en'` for Common Voice"
134
+ )
135
+ parser.add_argument("--split", type=str, required=True, help="Split of the dataset. *E.g.* `'test'`")
136
+ parser.add_argument(
137
+ "--chunk_length_s", type=float, default=None, help="Chunk length in seconds. Defaults to 5 seconds."
138
+ )
139
+ parser.add_argument(
140
+ "--stride_length_s", type=float, default=None, help="Stride of the audio chunks. Defaults to 1 second."
141
+ )
142
+ parser.add_argument(
143
+ "--log_outputs", action="store_true", help="If defined, write outputs to log file for analysis."
144
+ )
145
+ parser.add_argument(
146
+ "--device",
147
+ type=int,
148
+ default=None,
149
+ help="The device to run the pipeline on. -1 for CPU (default), 0 for the first GPU and so on.",
150
+ )
151
+ args = parser.parse_args()
152
+
153
+ main(args)
metrics.csv ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Name,Value,Timestamp,Step
2
+ train_runtime,1310.619,1.64691E+12,1
3
+ train_samples_per_second,0.618,1.64691E+12,1
4
+ train_steps_per_second,0.019,1.64691E+12,1
5
+ total_flos,1.03E+17,1.64691E+12,1
6
+ train_loss,0.6416,1.64691E+12,1
7
+ epoch,184.62,1.64691E+12,1
8
+ eval_loss,0.9889,1.64691E+12,1
9
+ eval_wer,0.5607,1.64691E+12,1
10
+ eval_cer,0.237,1.64691E+12,1
11
+ eval_runtime,119.2739,1.64691E+12,1
12
+ eval_samples_per_second,2.859,1.64691E+12,1
13
+ eval_steps_per_second,0.361,1.64691E+12,1
14
+ epoch,184.62,1.64691E+12,1
params.yml ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model: facebook/wav2vec2-xls-r-300m
2
+ trainer:
3
+ _n_gpu: 1
4
+ adafactor: false
5
+ adam_beta1: 0.9
6
+ adam_beta2: 0.999
7
+ adam_epsilon: 1.0e-08
8
+ bf16: false
9
+ bf16_full_eval: false
10
+ dataloader_drop_last: false
11
+ dataloader_num_workers: 0
12
+ dataloader_pin_memory: true
13
+ ddp_bucket_cap_mb: null
14
+ ddp_find_unused_parameters: null
15
+ debug: '[]'
16
+ deepspeed: null
17
+ disable_tqdm: false
18
+ do_eval: true
19
+ do_predict: false
20
+ do_train: false
21
+ eval_accumulation_steps: null
22
+ eval_steps: 500
23
+ evaluation_strategy: steps
24
+ fp16: true
25
+ fp16_backend: auto
26
+ fp16_full_eval: false
27
+ fp16_opt_level: O1
28
+ gradient_accumulation_steps: 2
29
+ gradient_checkpointing: true
30
+ greater_is_better: null
31
+ group_by_length: true
32
+ half_precision_backend: amp
33
+ hub_model_id: null
34
+ hub_strategy: every_save
35
+ hub_token: <HUB_TOKEN>
36
+ ignore_data_skip: false
37
+ label_names: null
38
+ label_smoothing_factor: 0.0
39
+ learning_rate: 0.0001
40
+ length_column_name: length
41
+ load_best_model_at_end: false
42
+ local_rank: -1
43
+ log_level: -1
44
+ log_level_replica: -1
45
+ log_on_each_node: true
46
+ logging_dir: wav2vec2-large-xls-r-300m-Urdu-CV8/runs/Mar10_09-33-33_c7ab98cbc2d3
47
+ logging_first_step: false
48
+ logging_nan_inf_filter: true
49
+ logging_steps: 500
50
+ logging_strategy: steps
51
+ lr_scheduler_type: linear
52
+ max_grad_norm: 1.0
53
+ max_steps: -1
54
+ metric_for_best_model: null
55
+ mp_parameters: ''
56
+ no_cuda: false
57
+ num_train_epochs: 200
58
+ optim: adamw_hf
59
+ output_dir: wav2vec2-large-xls-r-300m-Urdu-CV8
60
+ overwrite_output_dir: false
61
+ past_index: -1
62
+ per_device_eval_batch_size: 8
63
+ per_device_train_batch_size: 32
64
+ per_gpu_eval_batch_size: null
65
+ per_gpu_train_batch_size: null
66
+ prediction_loss_only: false
67
+ push_to_hub: true
68
+ push_to_hub_model_id: null
69
+ push_to_hub_organization: null
70
+ push_to_hub_token: <PUSH_TO_HUB_TOKEN>
71
+ remove_unused_columns: true
72
+ report_to: '[''mlflow'', ''tensorboard'']'
73
+ resume_from_checkpoint: null
74
+ run_name: wav2vec2-large-xls-r-300m-Urdu-CV8
75
+ save_on_each_node: false
76
+ save_steps: 500
77
+ save_strategy: steps
78
+ save_total_limit: 1
79
+ seed: 42
80
+ sharded_ddp: '[]'
81
+ skip_memory_metrics: true
82
+ tf32: null
83
+ tpu_metrics_debug: false
84
+ tpu_num_cores: null
85
+ use_legacy_prediction_loop: false
86
+ warmup_ratio: 0.0
87
+ warmup_steps: 10
88
+ weight_decay: 0.0
89
+ xpu_backend: null
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ Transformers==4.17.0.dev0
2
+ Pytorch==1.10.2+cu102
3
+ Datasets==1.18.2.dev0
4
+ Tokenizers==0.11.0
5
+ https://github.com/kpu/kenlm/archive/master.zip
6
+ pyctcdecode==0.3.0
run.sh ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ python run_speech_recognition_ctc.py \
2
+ --dataset_name="/Data" \
3
+ --model_name_or_path="facebook/wav2vec2-xls-r-300m" \
4
+ --dataset_config_name="ur" \
5
+ --output_dir="./Model" \
6
+ --overwrite_output_dir \
7
+ --num_train_epochs="200" \
8
+ --per_device_train_batch_size="32" \
9
+ --per_device_eval_batch_size="8" \
10
+ --gradient_accumulation_steps="2" \
11
+ --learning_rate="1e-4" \
12
+ --warmup_steps="1000" \
13
+ --length_column_name="input_length" \
14
+ --evaluation_strategy="steps" \
15
+ --text_column_name="sentence" \
16
+ --save_steps="500" \
17
+ --eval_steps="500" \
18
+ --logging_steps="500" \
19
+ --layerdrop="0.0" \
20
+ --activation_dropout="0.1" \
21
+ --save_total_limit="2" \
22
+ --freeze_feature_encoder \
23
+ --feat_proj_dropout="0.0" \
24
+ --mask_time_prob="0.75" \
25
+ --mask_time_length="10" \
26
+ --mask_feature_prob="0.25" \
27
+ --mask_feature_length="64" \
28
+ --chars_to_ignore ! ؛ ، ٫ ؟ ۔ ٪ " ' : - ‘ ’ \
29
+ --gradient_checkpointing \
30
+ --fp16 \
31
+ --group_by_length \
32
+ --do_train --do_eval
run_eval.sh ADDED
@@ -0,0 +1 @@
 
1
+ ./eval.py --model_id ./Model --dataset ./Data --config ur --split test --chunk_length_s 5.0 --stride_length_s 1.0 --log_outputs
run_speech_recognition_ctc.py ADDED
@@ -0,0 +1,731 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+ # coding=utf-8
3
+ # Copyright 2021 The HuggingFace Inc. team. All rights reserved.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+
16
+ """ Fine-tuning a 🤗 Transformers CTC model for automatic speech recognition"""
17
+
18
+ import functools
19
+ import json
20
+ import logging
21
+ import os
22
+ import re
23
+ import sys
24
+ import warnings
25
+ from dataclasses import dataclass, field
26
+ from typing import Dict, List, Optional, Union
27
+
28
+ import datasets
29
+ import numpy as np
30
+ import torch
31
+ from datasets import DatasetDict, load_dataset, load_metric
32
+
33
+ import transformers
34
+ from transformers import (
35
+ AutoConfig,
36
+ AutoFeatureExtractor,
37
+ AutoModelForCTC,
38
+ AutoProcessor,
39
+ AutoTokenizer,
40
+ HfArgumentParser,
41
+ Trainer,
42
+ TrainingArguments,
43
+ Wav2Vec2Processor,
44
+ set_seed,
45
+ )
46
+ from transformers.trainer_utils import get_last_checkpoint, is_main_process
47
+ from transformers.utils import check_min_version
48
+ from transformers.utils.versions import require_version
49
+
50
+
51
+ # Will error if the minimal version of Transformers is not installed. Remove at your own risks.
52
+ check_min_version("4.16.0.dev0")
53
+
54
+ require_version("datasets>=1.13.3", "To fix: pip install -r examples/pytorch/text-classification/requirements.txt")
55
+
56
+
57
+ logger = logging.getLogger(__name__)
58
+
59
+
60
+ def list_field(default=None, metadata=None):
61
+ return field(default_factory=lambda: default, metadata=metadata)
62
+
63
+
64
+ @dataclass
65
+ class ModelArguments:
66
+ """
67
+ Arguments pertaining to which model/config/tokenizer we are going to fine-tune from.
68
+ """
69
+
70
+ model_name_or_path: str = field(
71
+ metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"}
72
+ )
73
+ tokenizer_name_or_path: Optional[str] = field(
74
+ default=None,
75
+ metadata={"help": "Path to pretrained tokenizer or tokenizer identifier from huggingface.co/models"},
76
+ )
77
+ cache_dir: Optional[str] = field(
78
+ default=None,
79
+ metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"},
80
+ )
81
+ freeze_feature_encoder: bool = field(
82
+ default=True, metadata={"help": "Whether to freeze the feature encoder layers of the model."}
83
+ )
84
+ attention_dropout: float = field(
85
+ default=0.0, metadata={"help": "The dropout ratio for the attention probabilities."}
86
+ )
87
+ activation_dropout: float = field(
88
+ default=0.0, metadata={"help": "The dropout ratio for activations inside the fully connected layer."}
89
+ )
90
+ feat_proj_dropout: float = field(default=0.0, metadata={"help": "The dropout ratio for the projected features."})
91
+ hidden_dropout: float = field(
92
+ default=0.0,
93
+ metadata={
94
+ "help": "The dropout probability for all fully connected layers in the embeddings, encoder, and pooler."
95
+ },
96
+ )
97
+ final_dropout: float = field(
98
+ default=0.0,
99
+ metadata={"help": "The dropout probability for the final projection layer."},
100
+ )
101
+ mask_time_prob: float = field(
102
+ default=0.05,
103
+ metadata={
104
+ "help": "Probability of each feature vector along the time axis to be chosen as the start of the vector"
105
+ "span to be masked. Approximately ``mask_time_prob * sequence_length // mask_time_length`` feature"
106
+ "vectors will be masked along the time axis."
107
+ },
108
+ )
109
+ mask_time_length: int = field(
110
+ default=10,
111
+ metadata={"help": "Length of vector span to mask along the time axis."},
112
+ )
113
+ mask_feature_prob: float = field(
114
+ default=0.0,
115
+ metadata={
116
+ "help": "Probability of each feature vector along the feature axis to be chosen as the start of the vector"
117
+ "span to be masked. Approximately ``mask_feature_prob * sequence_length // mask_feature_length`` feature bins will be masked along the time axis."
118
+ },
119
+ )
120
+ mask_feature_length: int = field(
121
+ default=10,
122
+ metadata={"help": "Length of vector span to mask along the feature axis."},
123
+ )
124
+ layerdrop: float = field(default=0.0, metadata={"help": "The LayerDrop probability."})
125
+ ctc_loss_reduction: Optional[str] = field(
126
+ default="mean", metadata={"help": "The way the ctc loss should be reduced. Should be one of 'mean' or 'sum'."}
127
+ )
128
+
129
+
130
+ @dataclass
131
+ class DataTrainingArguments:
132
+ """
133
+ Arguments pertaining to what data we are going to input our model for training and eval.
134
+
135
+ Using `HfArgumentParser` we can turn this class
136
+ into argparse arguments to be able to specify them on
137
+ the command line.
138
+ """
139
+
140
+ dataset_name: str = field(
141
+ metadata={"help": "The configuration name of the dataset to use (via the datasets library)."}
142
+ )
143
+ dataset_config_name: str = field(
144
+ default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."}
145
+ )
146
+ train_split_name: str = field(
147
+ default="train+validation",
148
+ metadata={
149
+ "help": "The name of the training data set split to use (via the datasets library). Defaults to 'train'"
150
+ },
151
+ )
152
+ eval_split_name: str = field(
153
+ default="test",
154
+ metadata={
155
+ "help": "The name of the training data set split to use (via the datasets library). Defaults to 'train'"
156
+ },
157
+ )
158
+ audio_column_name: str = field(
159
+ default="audio",
160
+ metadata={"help": "The name of the dataset column containing the audio data. Defaults to 'audio'"},
161
+ )
162
+ text_column_name: str = field(
163
+ default="text",
164
+ metadata={"help": "The name of the dataset column containing the text data. Defaults to 'text'"},
165
+ )
166
+ overwrite_cache: bool = field(
167
+ default=False, metadata={"help": "Overwrite the cached preprocessed datasets or not."}
168
+ )
169
+ preprocessing_num_workers: Optional[int] = field(
170
+ default=None,
171
+ metadata={"help": "The number of processes to use for the preprocessing."},
172
+ )
173
+ max_train_samples: Optional[int] = field(
174
+ default=None,
175
+ metadata={
176
+ "help": "For debugging purposes or quicker training, truncate the number of training examples to this "
177
+ "value if set."
178
+ },
179
+ )
180
+ max_eval_samples: Optional[int] = field(
181
+ default=None,
182
+ metadata={
183
+ "help": "For debugging purposes or quicker training, truncate the number of validation examples to this "
184
+ "value if set."
185
+ },
186
+ )
187
+ chars_to_ignore: Optional[List[str]] = list_field(
188
+ default=None,
189
+ metadata={"help": "A list of characters to remove from the transcripts."},
190
+ )
191
+ eval_metrics: List[str] = list_field(
192
+ default=["wer"],
193
+ metadata={"help": "A list of metrics the model should be evaluated on. E.g. `'wer cer'`"},
194
+ )
195
+ max_duration_in_seconds: float = field(
196
+ default=20.0,
197
+ metadata={
198
+ "help": "Filter audio files that are longer than `max_duration_in_seconds` seconds to 'max_duration_in_seconds`"
199
+ },
200
+ )
201
+ min_duration_in_seconds: float = field(
202
+ default=0.0, metadata={"help": "Filter audio files that are shorter than `min_duration_in_seconds` seconds"}
203
+ )
204
+ preprocessing_only: bool = field(
205
+ default=False,
206
+ metadata={
207
+ "help": "Whether to only do data preprocessing and skip training. "
208
+ "This is especially useful when data preprocessing errors out in distributed training due to timeout. "
209
+ "In this case, one should run the preprocessing in a non-distributed setup with `preprocessing_only=True` "
210
+ "so that the cached datasets can consequently be loaded in distributed training"
211
+ },
212
+ )
213
+ use_auth_token: bool = field(
214
+ default=False,
215
+ metadata={
216
+ "help": "If :obj:`True`, will use the token generated when running"
217
+ ":obj:`transformers-cli login` as HTTP bearer authorization for remote files."
218
+ },
219
+ )
220
+ unk_token: str = field(
221
+ default="[UNK]",
222
+ metadata={"help": "The unk token for the tokenizer"},
223
+ )
224
+ pad_token: str = field(
225
+ default="[PAD]",
226
+ metadata={"help": "The padding token for the tokenizer"},
227
+ )
228
+ word_delimiter_token: str = field(
229
+ default="|",
230
+ metadata={"help": "The word delimiter token for the tokenizer"},
231
+ )
232
+ phoneme_language: Optional[str] = field(
233
+ default=None,
234
+ metadata={
235
+ "help": "The target language that should be used be"
236
+ " passed to the tokenizer for tokenization. Note that"
237
+ " this is only relevant if the model classifies the"
238
+ " input audio to a sequence of phoneme sequences."
239
+ },
240
+ )
241
+
242
+
243
+ @dataclass
244
+ class DataCollatorCTCWithPadding:
245
+ """
246
+ Data collator that will dynamically pad the inputs received.
247
+ Args:
248
+ processor (:class:`~transformers.AutoProcessor`)
249
+ The processor used for proccessing the data.
250
+ padding (:obj:`bool`, :obj:`str` or :class:`~transformers.tokenization_utils_base.PaddingStrategy`, `optional`, defaults to :obj:`True`):
251
+ Select a strategy to pad the returned sequences (according to the model's padding side and padding index)
252
+ among:
253
+ * :obj:`True` or :obj:`'longest'`: Pad to the longest sequence in the batch (or no padding if only a single
254
+ sequence if provided).
255
+ * :obj:`'max_length'`: Pad to a maximum length specified with the argument :obj:`max_length` or to the
256
+ maximum acceptable input length for the model if that argument is not provided.
257
+ * :obj:`False` or :obj:`'do_not_pad'` (default): No padding (i.e., can output a batch with sequences of
258
+ different lengths).
259
+ max_length (:obj:`int`, `optional`):
260
+ Maximum length of the ``input_values`` of the returned list and optionally padding length (see above).
261
+ max_length_labels (:obj:`int`, `optional`):
262
+ Maximum length of the ``labels`` returned list and optionally padding length (see above).
263
+ pad_to_multiple_of (:obj:`int`, `optional`):
264
+ If set will pad the sequence to a multiple of the provided value.
265
+ This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >=
266
+ 7.5 (Volta).
267
+ """
268
+
269
+ processor: AutoProcessor
270
+ padding: Union[bool, str] = "longest"
271
+ pad_to_multiple_of: Optional[int] = None
272
+ pad_to_multiple_of_labels: Optional[int] = None
273
+
274
+ def __call__(self, features: List[Dict[str, Union[List[int], torch.Tensor]]]) -> Dict[str, torch.Tensor]:
275
+ # split inputs and labels since they have to be of different lenghts and need
276
+ # different padding methods
277
+ input_features = [{"input_values": feature["input_values"]} for feature in features]
278
+ label_features = [{"input_ids": feature["labels"]} for feature in features]
279
+
280
+ batch = self.processor.pad(
281
+ input_features,
282
+ padding=self.padding,
283
+ pad_to_multiple_of=self.pad_to_multiple_of,
284
+ return_tensors="pt",
285
+ )
286
+
287
+ with self.processor.as_target_processor():
288
+ labels_batch = self.processor.pad(
289
+ label_features,
290
+ padding=self.padding,
291
+ pad_to_multiple_of=self.pad_to_multiple_of_labels,
292
+ return_tensors="pt",
293
+ )
294
+
295
+ # replace padding with -100 to ignore loss correctly
296
+ labels = labels_batch["input_ids"].masked_fill(labels_batch.attention_mask.ne(1), -100)
297
+
298
+ batch["labels"] = labels
299
+
300
+ return batch
301
+
302
+
303
+ def create_vocabulary_from_data(
304
+ datasets: DatasetDict,
305
+ word_delimiter_token: Optional[str] = None,
306
+ unk_token: Optional[str] = None,
307
+ pad_token: Optional[str] = None,
308
+ ):
309
+ # Given training and test labels create vocabulary
310
+ def extract_all_chars(batch):
311
+ all_text = " ".join(batch["target_text"])
312
+ vocab = list(set(all_text))
313
+ return {"vocab": [vocab], "all_text": [all_text]}
314
+
315
+ vocabs = datasets.map(
316
+ extract_all_chars,
317
+ batched=True,
318
+ batch_size=-1,
319
+ keep_in_memory=True,
320
+ remove_columns=datasets["train"].column_names,
321
+ )
322
+
323
+ # take union of all unique characters in each dataset
324
+ vocab_set = functools.reduce(
325
+ lambda vocab_1, vocab_2: set(vocab_1["vocab"][0]) | set(vocab_2["vocab"][0]), vocabs.values()
326
+ )
327
+
328
+ vocab_dict = {v: k for k, v in enumerate(sorted(list(vocab_set)))}
329
+
330
+ # replace white space with delimiter token
331
+ if word_delimiter_token is not None:
332
+ vocab_dict[word_delimiter_token] = vocab_dict[" "]
333
+ del vocab_dict[" "]
334
+
335
+ # add unk and pad token
336
+ if unk_token is not None:
337
+ vocab_dict[unk_token] = len(vocab_dict)
338
+
339
+ if pad_token is not None:
340
+ vocab_dict[pad_token] = len(vocab_dict)
341
+
342
+ return vocab_dict
343
+
344
+
345
+ def main():
346
+ # See all possible arguments in src/transformers/training_args.py
347
+ # or by passing the --help flag to this script.
348
+ # We now keep distinct sets of args, for a cleaner separation of concerns.
349
+
350
+ parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments))
351
+ if len(sys.argv) == 2 and sys.argv[1].endswith(".json"):
352
+ # If we pass only one argument to the script and it's the path to a json file,
353
+ # let's parse it to get our arguments.
354
+ model_args, data_args, training_args = parser.parse_json_file(json_file=os.path.abspath(sys.argv[1]))
355
+ else:
356
+ model_args, data_args, training_args = parser.parse_args_into_dataclasses()
357
+
358
+ # Detecting last checkpoint.
359
+ last_checkpoint = None
360
+ if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir:
361
+ last_checkpoint = get_last_checkpoint(training_args.output_dir)
362
+ if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0:
363
+ raise ValueError(
364
+ f"Output directory ({training_args.output_dir}) already exists and is not empty. "
365
+ "Use --overwrite_output_dir to overcome."
366
+ )
367
+ elif last_checkpoint is not None:
368
+ logger.info(
369
+ f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change "
370
+ "the `--output_dir` or add `--overwrite_output_dir` to train from scratch."
371
+ )
372
+
373
+ # Setup logging
374
+ logging.basicConfig(
375
+ format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
376
+ datefmt="%m/%d/%Y %H:%M:%S",
377
+ handlers=[logging.StreamHandler(sys.stdout)],
378
+ )
379
+ logger.setLevel(logging.INFO if is_main_process(training_args.local_rank) else logging.WARN)
380
+
381
+ # Log on each process the small summary:
382
+ logger.warning(
383
+ f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}"
384
+ f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}"
385
+ )
386
+ # Set the verbosity to info of the Transformers logger (on main process only):
387
+ if is_main_process(training_args.local_rank):
388
+ transformers.utils.logging.set_verbosity_info()
389
+ logger.info("Training/evaluation parameters %s", training_args)
390
+
391
+ # Set seed before initializing model.
392
+ set_seed(training_args.seed)
393
+
394
+ # 1. First, let's load the dataset
395
+ raw_datasets = DatasetDict()
396
+
397
+ if training_args.do_train:
398
+ raw_datasets["train"] = load_dataset(
399
+ data_args.dataset_name, data_args.dataset_config_name, split=data_args.train_split_name, delimiter="\t",use_auth_token=data_args.use_auth_token
400
+ )
401
+
402
+ if data_args.audio_column_name not in raw_datasets["train"].column_names:
403
+ raise ValueError(
404
+ f"--audio_column_name '{data_args.audio_column_name}' not found in dataset '{data_args.dataset_name}'. "
405
+ "Make sure to set `--audio_column_name` to the correct audio column - one of "
406
+ f"{', '.join(raw_datasets['train'].column_names)}."
407
+ )
408
+
409
+ if data_args.text_column_name not in raw_datasets["train"].column_names:
410
+ raise ValueError(
411
+ f"--text_column_name {data_args.text_column_name} not found in dataset '{data_args.dataset_name}'. "
412
+ "Make sure to set `--text_column_name` to the correct text column - one of "
413
+ f"{', '.join(raw_datasets['train'].column_names)}."
414
+ )
415
+
416
+ if data_args.max_train_samples is not None:
417
+ raw_datasets["train"] = raw_datasets["train"].select(range(data_args.max_train_samples))
418
+
419
+ if training_args.do_eval:
420
+ raw_datasets["eval"] = load_dataset(
421
+ data_args.dataset_name, data_args.dataset_config_name, split=data_args.eval_split_name, use_auth_token=data_args.use_auth_token
422
+ )
423
+
424
+ if data_args.max_eval_samples is not None:
425
+ raw_datasets["eval"] = raw_datasets["eval"].select(range(data_args.max_eval_samples))
426
+
427
+ # 2. We remove some special characters from the datasets
428
+ # that make training complicated and do not help in transcribing the speech
429
+ # E.g. characters, such as `,` and `.` do not really have an acoustic characteristic
430
+ # that could be easily picked up by the model
431
+ chars_to_ignore_regex = (
432
+ f'[{"".join(data_args.chars_to_ignore)}]' if data_args.chars_to_ignore is not None else None
433
+ )
434
+ text_column_name = data_args.text_column_name
435
+
436
+ def remove_special_characters(batch):
437
+ if chars_to_ignore_regex is not None:
438
+ batch["target_text"] = re.sub(chars_to_ignore_regex, "", batch[text_column_name]).lower() + " "
439
+ else:
440
+ batch["target_text"] = batch[text_column_name].lower() + " "
441
+ return batch
442
+
443
+ with training_args.main_process_first(desc="dataset map special characters removal"):
444
+ raw_datasets = raw_datasets.map(
445
+ remove_special_characters,
446
+ remove_columns=[text_column_name],
447
+ desc="remove special characters from datasets",
448
+ )
449
+
450
+ # save special tokens for tokenizer
451
+ word_delimiter_token = data_args.word_delimiter_token
452
+ unk_token = data_args.unk_token
453
+ pad_token = data_args.pad_token
454
+
455
+ # 3. Next, let's load the config as we might need it to create
456
+ # the tokenizer
457
+ # load config
458
+ config = AutoConfig.from_pretrained(
459
+ model_args.model_name_or_path, cache_dir=model_args.cache_dir, use_auth_token=data_args.use_auth_token
460
+ )
461
+
462
+ # 4. Next, if no tokenizer file is defined,
463
+ # we create the vocabulary of the model by extracting all unique characters from
464
+ # the training and evaluation datasets
465
+ # We need to make sure that only first rank saves vocabulary
466
+ # make sure all processes wait until vocab is created
467
+ tokenizer_name_or_path = model_args.tokenizer_name_or_path
468
+ tokenizer_kwargs = {}
469
+ if tokenizer_name_or_path is None:
470
+ # save vocab in training output dir
471
+ tokenizer_name_or_path = training_args.output_dir
472
+
473
+ vocab_file = os.path.join(tokenizer_name_or_path, "vocab.json")
474
+
475
+ with training_args.main_process_first():
476
+ if training_args.overwrite_output_dir and os.path.isfile(vocab_file):
477
+ os.remove(vocab_file)
478
+
479
+ with training_args.main_process_first(desc="dataset map vocabulary creation"):
480
+ if not os.path.isfile(vocab_file):
481
+ os.makedirs(tokenizer_name_or_path, exist_ok=True)
482
+ vocab_dict = create_vocabulary_from_data(
483
+ raw_datasets,
484
+ word_delimiter_token=word_delimiter_token,
485
+ unk_token=unk_token,
486
+ pad_token=pad_token,
487
+ )
488
+
489
+ # save vocab dict to be loaded into tokenizer
490
+ with open(vocab_file, "w") as file:
491
+ json.dump(vocab_dict, file)
492
+
493
+ # if tokenizer has just been created
494
+ # it is defined by `tokenizer_class` if present in config else by `model_type`
495
+ tokenizer_kwargs = {
496
+ "config": config if config.tokenizer_class is not None else None,
497
+ "tokenizer_type": config.model_type if config.tokenizer_class is None else None,
498
+ "unk_token": unk_token,
499
+ "pad_token": pad_token,
500
+ "word_delimiter_token": word_delimiter_token,
501
+ }
502
+
503
+ # 5. Now we can instantiate the feature extractor, tokenizer and model
504
+ # Note for distributed training, the .from_pretrained methods guarantee that only
505
+ # one local process can concurrently download model & vocab.
506
+
507
+ # load feature_extractor and tokenizer
508
+ tokenizer = AutoTokenizer.from_pretrained(
509
+ tokenizer_name_or_path,
510
+ use_auth_token=data_args.use_auth_token,
511
+ **tokenizer_kwargs,
512
+ )
513
+ feature_extractor = AutoFeatureExtractor.from_pretrained(
514
+ model_args.model_name_or_path, cache_dir=model_args.cache_dir, use_auth_token=data_args.use_auth_token
515
+ )
516
+
517
+ # adapt config
518
+ config.update(
519
+ {
520
+ "feat_proj_dropout": model_args.feat_proj_dropout,
521
+ "attention_dropout": model_args.attention_dropout,
522
+ "hidden_dropout": model_args.hidden_dropout,
523
+ "final_dropout": model_args.final_dropout,
524
+ "mask_time_prob": model_args.mask_time_prob,
525
+ "mask_time_length": model_args.mask_time_length,
526
+ "mask_feature_prob": model_args.mask_feature_prob,
527
+ "mask_feature_length": model_args.mask_feature_length,
528
+ "gradient_checkpointing": training_args.gradient_checkpointing,
529
+ "layerdrop": model_args.layerdrop,
530
+ "ctc_loss_reduction": model_args.ctc_loss_reduction,
531
+ "pad_token_id": tokenizer.pad_token_id,
532
+ "vocab_size": len(tokenizer),
533
+ "activation_dropout": model_args.activation_dropout,
534
+ }
535
+ )
536
+
537
+ # create model
538
+ model = AutoModelForCTC.from_pretrained(
539
+ model_args.model_name_or_path,
540
+ cache_dir=model_args.cache_dir,
541
+ config=config,
542
+ use_auth_token=data_args.use_auth_token,
543
+ )
544
+
545
+ # freeze encoder
546
+ if model_args.freeze_feature_encoder:
547
+ model.freeze_feature_encoder()
548
+
549
+ # 6. Now we preprocess the datasets including loading the audio, resampling and normalization
550
+ # Thankfully, `datasets` takes care of automatically loading and resampling the audio,
551
+ # so that we just need to set the correct target sampling rate and normalize the input
552
+ # via the `feature_extractor`
553
+
554
+ # make sure that dataset decodes audio with correct sampling rate
555
+ dataset_sampling_rate = next(iter(raw_datasets.values())).features[data_args.audio_column_name].sampling_rate
556
+ if dataset_sampling_rate != feature_extractor.sampling_rate:
557
+ raw_datasets = raw_datasets.cast_column(
558
+ data_args.audio_column_name, datasets.features.Audio(sampling_rate=feature_extractor.sampling_rate)
559
+ )
560
+
561
+ # derive max & min input length for sample rate & max duration
562
+ max_input_length = data_args.max_duration_in_seconds * feature_extractor.sampling_rate
563
+ min_input_length = data_args.min_duration_in_seconds * feature_extractor.sampling_rate
564
+ audio_column_name = data_args.audio_column_name
565
+ num_workers = data_args.preprocessing_num_workers
566
+
567
+ # `phoneme_language` is only relevant if the model is fine-tuned on phoneme classification
568
+ phoneme_language = data_args.phoneme_language
569
+
570
+ # Preprocessing the datasets.
571
+ # We need to read the audio files as arrays and tokenize the targets.
572
+ def prepare_dataset(batch):
573
+ # load audio
574
+ sample = batch[audio_column_name]
575
+
576
+ inputs = feature_extractor(sample["array"], sampling_rate=sample["sampling_rate"])
577
+ batch["input_values"] = inputs.input_values[0]
578
+ batch["input_length"] = len(batch["input_values"])
579
+
580
+ # encode targets
581
+ additional_kwargs = {}
582
+ if phoneme_language is not None:
583
+ additional_kwargs["phonemizer_lang"] = phoneme_language
584
+
585
+ batch["labels"] = tokenizer(batch["target_text"], **additional_kwargs).input_ids
586
+ return batch
587
+
588
+ with training_args.main_process_first(desc="dataset map preprocessing"):
589
+ vectorized_datasets = raw_datasets.map(
590
+ prepare_dataset,
591
+ remove_columns=next(iter(raw_datasets.values())).column_names,
592
+ num_proc=num_workers,
593
+ desc="preprocess datasets",
594
+ )
595
+
596
+ def is_audio_in_length_range(length):
597
+ return length > min_input_length and length < max_input_length
598
+
599
+ # filter data that is shorter than min_input_length
600
+ vectorized_datasets = vectorized_datasets.filter(
601
+ is_audio_in_length_range,
602
+ num_proc=num_workers,
603
+ input_columns=["input_length"],
604
+ )
605
+
606
+ # 7. Next, we can prepare the training.
607
+ # Let's use word error rate (WER) as our evaluation metric,
608
+ # instantiate a data collator and the trainer
609
+
610
+ # Define evaluation metrics during training, *i.e.* word error rate, character error rate
611
+ eval_metrics = {metric: load_metric(metric) for metric in data_args.eval_metrics}
612
+
613
+ # for large datasets it is advised to run the preprocessing on a
614
+ # single machine first with ``args.preprocessing_only`` since there will mostly likely
615
+ # be a timeout when running the script in distributed mode.
616
+ # In a second step ``args.preprocessing_only`` can then be set to `False` to load the
617
+ # cached dataset
618
+ if data_args.preprocessing_only:
619
+ logger.info(f"Data preprocessing finished. Files cached at {vectorized_datasets.cache_files}")
620
+ return
621
+
622
+ def compute_metrics(pred):
623
+ pred_logits = pred.predictions
624
+ pred_ids = np.argmax(pred_logits, axis=-1)
625
+
626
+ pred.label_ids[pred.label_ids == -100] = tokenizer.pad_token_id
627
+
628
+ pred_str = tokenizer.batch_decode(pred_ids)
629
+ # we do not want to group tokens when computing the metrics
630
+ label_str = tokenizer.batch_decode(pred.label_ids, group_tokens=False)
631
+
632
+ metrics = {k: v.compute(predictions=pred_str, references=label_str) for k, v in eval_metrics.items()}
633
+
634
+ return metrics
635
+
636
+ # Now save everything to be able to create a single processor later
637
+ if is_main_process(training_args.local_rank):
638
+ # save feature extractor, tokenizer and config
639
+ feature_extractor.save_pretrained(training_args.output_dir)
640
+ tokenizer.save_pretrained(training_args.output_dir)
641
+ config.save_pretrained(training_args.output_dir)
642
+
643
+ try:
644
+ processor = AutoProcessor.from_pretrained(training_args.output_dir)
645
+ except (OSError, KeyError):
646
+ warnings.warn(
647
+ "Loading a processor from a feature extractor config that does not"
648
+ " include a `processor_class` attribute is deprecated and will be removed in v5. Please add the following "
649
+ " attribute to your `preprocessor_config.json` file to suppress this warning: "
650
+ " `'processor_class': 'Wav2Vec2Processor'`",
651
+ FutureWarning,
652
+ )
653
+ processor = Wav2Vec2Processor.from_pretrained(training_args.output_dir)
654
+
655
+ # Instantiate custom data collator
656
+ data_collator = DataCollatorCTCWithPadding(processor=processor)
657
+
658
+ # Initialize Trainer
659
+ trainer = Trainer(
660
+ model=model,
661
+ data_collator=data_collator,
662
+ args=training_args,
663
+ compute_metrics=compute_metrics,
664
+ train_dataset=vectorized_datasets["train"] if training_args.do_train else None,
665
+ eval_dataset=vectorized_datasets["eval"] if training_args.do_eval else None,
666
+ tokenizer=feature_extractor,
667
+ )
668
+
669
+ # 8. Finally, we can start training
670
+
671
+ # Training
672
+ if training_args.do_train:
673
+
674
+ # use last checkpoint if exist
675
+ if last_checkpoint is not None:
676
+ checkpoint = last_checkpoint
677
+ elif os.path.isdir(model_args.model_name_or_path):
678
+ checkpoint = model_args.model_name_or_path
679
+ else:
680
+ checkpoint = None
681
+
682
+ train_result = trainer.train(resume_from_checkpoint=checkpoint)
683
+ trainer.save_model()
684
+
685
+ metrics = train_result.metrics
686
+ max_train_samples = (
687
+ data_args.max_train_samples
688
+ if data_args.max_train_samples is not None
689
+ else len(vectorized_datasets["train"])
690
+ )
691
+ metrics["train_samples"] = min(max_train_samples, len(vectorized_datasets["train"]))
692
+
693
+ trainer.log_metrics("train", metrics)
694
+ trainer.save_metrics("train", metrics)
695
+ trainer.save_state()
696
+
697
+ # Evaluation
698
+ results = {}
699
+ if training_args.do_eval:
700
+ logger.info("*** Evaluate ***")
701
+ metrics = trainer.evaluate()
702
+ max_eval_samples = (
703
+ data_args.max_eval_samples if data_args.max_eval_samples is not None else len(vectorized_datasets["eval"])
704
+ )
705
+ metrics["eval_samples"] = min(max_eval_samples, len(vectorized_datasets["eval"]))
706
+
707
+ trainer.log_metrics("eval", metrics)
708
+ trainer.save_metrics("eval", metrics)
709
+
710
+ # Write model card and (optionally) push to hub
711
+ config_name = data_args.dataset_config_name if data_args.dataset_config_name is not None else "na"
712
+ kwargs = {
713
+ "finetuned_from": model_args.model_name_or_path,
714
+ "tasks": "speech-recognition",
715
+ "tags": ["automatic-speech-recognition", data_args.dataset_name],
716
+ "dataset_args": f"Config: {config_name}, Training split: {data_args.train_split_name}, Eval split: {data_args.eval_split_name}",
717
+ "dataset": f"{data_args.dataset_name.upper()} - {config_name.upper()}",
718
+ }
719
+ if "common_voice" in data_args.dataset_name:
720
+ kwargs["language"] = config_name
721
+
722
+ if training_args.push_to_hub:
723
+ trainer.push_to_hub(**kwargs)
724
+ else:
725
+ trainer.create_model_card(**kwargs)
726
+
727
+ return results
728
+
729
+
730
+ if __name__ == "__main__":
731
+ main()