Further polishing of decoding accuracy

This commit is contained in:
Karlis Goba 2019-11-11 13:36:22 +02:00
parent 100ef498c5
commit 82da02f7ad
23 changed files with 148 additions and 54 deletions

View file

@ -15,8 +15,8 @@
#define LOG_LEVEL LOG_INFO #define LOG_LEVEL LOG_INFO
const int kMax_candidates = 100; const int kMax_candidates = 120;
const int kLDPC_iterations = 20; const int kLDPC_iterations = 25;
const int kMax_decoded_messages = 50; const int kMax_decoded_messages = 50;
const int kMax_message_length = 25; const int kMax_message_length = 25;
@ -252,7 +252,9 @@ int main(int argc, char **argv) {
} }
char message[kMax_message_length]; char message[kMax_message_length];
ft8::unpack77(a91, message); if (ft8::unpack77(a91, message) < 0) {
continue;
}
// Check for duplicate messages (TODO: use hashing) // Check for duplicate messages (TODO: use hashing)
bool found = false; bool found = false;

View file

@ -54,7 +54,8 @@ int unpack28(uint32_t n28, uint8_t ip, uint8_t i3, char *result) {
//n22=n28 //n22=n28
//call hash22(n22,c13) !Retrieve result from hash table //call hash22(n22,c13) !Retrieve result from hash table
// TODO: implement // TODO: implement
return -2; strcpy(result, "<...>");
return 0;
} }
// Standard callsign // Standard callsign
@ -76,6 +77,7 @@ int unpack28(uint32_t n28, uint8_t ip, uint8_t i3, char *result) {
// Skip trailing and leading whitespace in case of a short callsign // Skip trailing and leading whitespace in case of a short callsign
strcpy(result, trim(callsign)); strcpy(result, trim(callsign));
if (strlen(result) == 0) return -1;
// Check if we should append /R or /P suffix // Check if we should append /R or /P suffix
if (ip) { if (ip) {
@ -280,10 +282,8 @@ int unpack_nonstandard(const uint8_t *a77, char *message)
} }
char call_3[15]; char call_3[15];
call_3[0] = '<'; // should replace with hash12(n12, call_3);
call_3[1] = '>'; strcpy(call_3, "<...>");
call_3[2] = '\0';
//hash12(n12, call_3);
char * call_1 = (iflip) ? c11 : call_3; char * call_1 = (iflip) ? c11 : call_3;
char * call_2 = (iflip) ? call_3 : c11; char * call_2 = (iflip) ? call_3 : c11;

1
tests/191111_110115.txt Normal file
View file

@ -0,0 +1 @@
110115 6 0.9 1234 ~ GJ0KYZ RK9AX MO05

BIN
tests/191111_110115.wav Normal file

Binary file not shown.

5
tests/191111_110130.txt Normal file
View file

@ -0,0 +1,5 @@
110130 -6 0.7 683 ~ CQ TA6CQ KN70 AS Turkey
110130 -16 1.0 989 ~ OH3NIV ZS6S -03
110130 -6 0.9 1291 ~ CQ R7IW LN35 EU Russia
110130 -4 0.9 2096 ~ CQ DX R6WA LN32 EU Russia
110130 -14 1.2 2479 ~ TK4LS YC1MRF 73

BIN
tests/191111_110130.wav Normal file

Binary file not shown.

2
tests/191111_110145.txt Normal file
View file

@ -0,0 +1,2 @@
110145 -4 1.0 322 ~ <...> RY8CAA
110145 7 1.0 1234 ~ GJ0KYZ RK9AX MO05

BIN
tests/191111_110145.wav Normal file

Binary file not shown.

5
tests/191111_110200.txt Normal file
View file

@ -0,0 +1,5 @@
110200 -4 0.7 683 ~ CQ TA6CQ KN70 AS Turkey
110200 -16 1.0 990 ~ OH3NIV ZS6S RR73
110200 -17 0.6 1031 ~ CQ LZ1JZ KN22 Bulgaria
110200 -12 0.9 1292 ~ CQ R7IW LN35 EU Russia
110200 -7 0.9 2097 ~ CQ DX R6WA LN32 EU Russia

BIN
tests/191111_110200.wav Normal file

Binary file not shown.

4
tests/191111_110215.txt Normal file
View file

@ -0,0 +1,4 @@
110215 3 1.0 323 ~ <...> RY8CAA R-10
110215 -12 0.1 996 ~ GJ0KYZ UA6HI -15
110215 2 0.9 1235 ~ GJ0KYZ RK9AX MO05
110215 -16 0.9 2059 ~ CQ DX Z33Z KN11 N. Macedonia

BIN
tests/191111_110215.wav Normal file

Binary file not shown.

22
tests/191111_110615.txt Normal file
View file

@ -0,0 +1,22 @@
110615 -2 1.0 431 ~ VK4BLE OH8JK R-17
110615 -14 0.9 539 ~ RK6AH JH1AJT -05
110615 -18 0.9 656 ~ PA3EPP SP8NFO KN09
110615 -10 1.8 700 ~ RV6K RU3XL -13
110615 -16 0.9 756 ~ PA3EPP SP8NFO KN09
110615 -11 1.3 810 ~ SQ8OHR UA9LL MO27
110615 15 0.9 906 ~ PA3EPP SP8NFO KN09
110615 10 0.9 1196 ~ ET3RFG/R IN3ADG -23
110615 3 0.9 1284 ~ CQ F4FSY JN25 France
110615 -8 0.9 1349 ~ JR5MJS OH8NW 73
110615 -12 1.0 1404 ~ SV1GN RK6AUV LN05
110615 -24 0.9 1617 ~ PB5DX EI3CTB IO63
110615 10 1.5 2191 ~ CQ IZ1ANK JN33 Italy
110615 0 0.9 2281 ~ NT6Q OH8GDU -17
110615 -7 0.9 2447 ~ CQ DL1UDO JO31 Germany
110615 4 0.8 2576 ~ VK4BLE OH1EDK -20
110615 8 1.0 2656 ~ CQ JA OH1LWZ KP11 Finland
110615 -11 1.0 297 ~ <...> ON7EE JO10
110615 -17 0.8 594 ~ CQ DG0OFT JO50 Germany
110615 -16 0.8 1049 ~ CQ UB3AQS KO85 EU Russia
110615 -3 1.0 1201 ~ G1XJM HA7JIV JN97
110615 -16 1.4 2727 ~ SP7XIF JA2GQT -15

BIN
tests/191111_110615.wav Normal file

Binary file not shown.

15
tests/191111_110630.txt Normal file
View file

@ -0,0 +1,15 @@
110630 -20 1.1 518 ~ CQ PC2J JO22
110630 4 1.2 809 ~ UA9LL SQ8OHR -10
110630 15 -0.5 973 ~ JA2GQT SP7XIF JO91
110630 -3 0.8 1034 ~ CQ EA3UV JN01
110630 -5 1.4 1405 ~ RK6AUV SV1GN -18
110630 -15 1.0 1485 ~ SP8NFO PA3EPP +04
110630 -6 0.9 1670 ~ CQ PB5DX JO22
110630 -9 0.9 1722 ~ CQ SM7HZK JO76
110630 5 0.8 1954 ~ JH1AJT RK6AH R+07
110630 -2 0.9 2030 ~ JL1TZQ R3BV R-18
110630 -16 0.9 2110 ~ <...> DF1XG JO53
110630 19 1.3 2728 ~ CQ DX IK0YVV JN62
110630 -10 0.9 840 ~ CQ OR18RSX
110630 -24 0.3 1114 ~ CQ JR5MJS PM74
110630 -21 1.0 1695 ~ JA2GQT F8NHF -10

BIN
tests/191111_110630.wav Normal file

Binary file not shown.

20
tests/191111_110645.txt Normal file
View file

@ -0,0 +1,20 @@
110645 0 0.9 430 ~ VK4BLE OH8JK R-17
110645 -18 1.8 699 ~ CQ RU3XL KO84
110645 -23 0.7 756 ~ PA3EPP SP8NFO R+01
110645 9 0.7 906 ~ PA3EPP SP8NFO R+01
110645 -20 0.9 1049 ~ CQ UB3AQS KO85
110645 10 0.9 1196 ~ ET3RFG/R IN3ADG -23
110645 -1 0.9 1283 ~ CQ F4FSY JN25
110645 -16 1.0 1404 ~ SV1GN RK6AUV R-03
110645 -24 0.9 1617 ~ PB5DX EI3CTB IO63
110645 -10 1.0 2111 ~ CQ OR18TRA
110645 3 1.5 2191 ~ PC2J IZ1ANK +01
110645 -4 0.9 2281 ~ CQ OH8GDU KP24
110645 -10 0.9 2447 ~ CQ DL1UDO JO31
110645 6 0.7 2576 ~ VK4BLE OH1EDK -20
110645 5 1.0 2656 ~ CQ JA OH1LWZ KP11
110645 -21 0.8 594 ~ CQ DG0OFT JO50
110645 -21 0.7 1114 ~ <...> DA0FONTANE
110645 -6 1.0 1201 ~ G1XJM HA7JIV JN97
110645 -21 0.9 2092 ~ WB2QJ ES3AT KO18
110645 -15 1.4 2726 ~ SP7XIF JA2GQT -13

BIN
tests/191111_110645.wav Normal file

Binary file not shown.

16
tests/191111_110700.txt Normal file
View file

@ -0,0 +1,16 @@
110700 -17 1.1 518 ~ IZ1ANK PC2J R+10
110700 -15 0.9 840 ~ CQ OR18RSX
110700 13 -0.5 973 ~ JA2GQT SP7XIF JO91
110700 -2 0.8 1034 ~ CQ EA3UV JN01
110700 -22 0.3 1115 ~ CQ JR5MJS PM74
110700 -21 0.9 1244 ~ DG0OFT W4FGA EM83
110700 -8 1.6 1405 ~ RK6AUV SV1GN RR73
110700 -21 1.0 1485 ~ SP8NFO PA3EPP +04
110700 -12 0.9 1670 ~ CQ PB5DX JO22
110700 15 0.9 1726 ~ JH1AJT SP8BJU -04
110700 4 1.0 1954 ~ JH1AJT RK6AH 73
110700 -10 0.9 2030 ~ JL1TZQ R3BV R-12
110700 -15 0.9 2111 ~ <...> IT9AAI JM67
110700 -6 1.1 2358 ~ LA2GCA F5MXH JN07
110700 18 1.3 2728 ~ CQ DX IK0YVV JN62
110700 -24 0.9 1578 ~ CQ M0NPT IO92

BIN
tests/191111_110700.wav Normal file

Binary file not shown.

View file

@ -1,30 +1,30 @@
000000 -9 0.9 272 ~ CQ DL8ALH JN58 Germany 000000 -7 0.9 272 ~ CQ DL8ALH JN58
000000 10 0.2 457 ~ CQ HF19NY Poland 000000 14 0.2 457 ~ CQ HF19NY
000000 -4 0.6 570 ~ 4X5MZ RA6FSD 73 000000 -1 0.6 570 ~ 4X5MZ RA6FSD 73
000000 -8 0.2 696 ~ EA8TH F8DBF R-04 000000 -4 0.2 696 ~ EA8TH F8DBF R-04
000000 -7 0.3 859 ~ CQ IK2YCW JN55 Italy 000000 -4 0.3 859 ~ CQ IK2YCW JN55
000000 -4 1.9 915 ~ CQ UY5AX KO70 Ukraine 000000 -2 1.9 915 ~ CQ UY5AX KO70
000000 -4 0.2 1012 ~ CQ CU2DX HM77 Azores 000000 -2 0.2 1012 ~ CQ CU2DX HM77
000000 -2 0.4 1113 ~ CQ OE3UKW JN88 Austria 000000 0 0.4 1113 ~ CQ OE3UKW JN88
000000 6 0.2 1256 ~ CQ DM1YS JO30 Germany 000000 8 0.2 1256 ~ CQ DM1YS JO30
000000 0 -1.4 1316 ~ CQ SP6ZJB JO80 Poland 000000 1 -1.4 1316 ~ CQ SP6ZJB JO80
000000 -21 0.3 1616 ~ SM2EKA UT7IS -06 000000 -20 0.3 1616 ~ SM2EKA UT7IS -06
000000 -9 0.2 1667 ~ CQ DL7ACN JN49 Germany 000000 -8 0.2 1667 ~ CQ DL7ACN JN49
000000 5 0.3 1716 ~ SM2EKA UT7IS -06 000000 6 0.3 1716 ~ SM2EKA UT7IS -06
000000 -10 0.3 1822 ~ DK5OK DB4BU 73 000000 -10 0.3 1822 ~ DK5OK DB4BU 73
000000 -11 0.2 1891 ~ JA6VQA EA8PP R-24 000000 -10 0.2 1891 ~ JA6VQA EA8PP R-24
000000 -1 0.1 1992 ~ CQ OM7ZM JN98 Slovak Rep. 000000 0 0.1 1992 ~ CQ OM7ZM JN98
000000 1 0.4 2105 ~ HA1BL EA2AA -09 000000 2 0.4 2105 ~ HA1BL EA2AA -09
000000 -4 0.5 2187 ~ JH1AJT EA1RT -10 000000 -3 0.5 2187 ~ JH1AJT EA1RT -10
000000 8 -0.1 2244 ~ CQ SQ7MRR JO91 Poland 000000 10 -0.1 2244 ~ CQ SQ7MRR JO91
000000 7 0.2 2324 ~ CQ DK7LE JO54 Germany 000000 9 0.2 2324 ~ CQ DK7LE JO54
000000 -4 0.2 2392 ~ DJ0AH DL6WAB JO41 000000 -2 0.2 2392 ~ DJ0AH DL6WAB JO41
000000 1 0.2 2746 ~ CQ ON8GE JO20 Belgium 000000 4 0.2 2746 ~ CQ ON8GE JO20
000000 -19 0.4 348 ~ OM7AZA SV8EUB -11 000000 -18 0.4 348 ~ OM7AZA SV8EUB -11
000000 -10 0.5 586 ~ CQ DX DO4TP JO31 Germany 000000 -8 0.5 586 ~ CQ DX DO4TP JO31
000000 -11 0.6 690 ~ CQ UT9LB KN89 Ukraine 000000 -9 0.6 690 ~ CQ UT9LB KN89
000000 -5 0.3 922 ~ CQ E74BYZ JN84 Bosnia-Herzegovina 000000 -3 0.3 922 ~ CQ E74BYZ JN84
000000 -6 1.0 968 ~ PE0TS LZ2KV -25 000000 -5 1.0 968 ~ PE0TS LZ2KV -25
000000 -14 0.2 1141 ~ CQ DK2TS JO31 Germany 000000 -13 0.2 1140 ~ CQ DK2TS JO31
000000 -4 1.7 1715 ~ SM2EKA SV9FBN KM25 000000 -4 1.7 1715 ~ SM2EKA SV9FBN KM25
000000 -4 0.1 2132 ~ ON4FG UT8UU 73 000000 -4 0.1 2132 ~ ON4FG UT8UU 73

View file

@ -1,27 +1,27 @@
000000 -16 0.5 350 ~ DM1YS GW1YQM IO82 000000 -18 0.5 350 ~ DM1YS GW1YQM IO82
000000 2 0.2 457 ~ <HF19NY> SO5WD +04 000000 0 0.2 457 ~ <...> SO5WD +04
000000 12 0.2 570 ~ RA6FSD SP2EWQ -07 000000 10 0.2 570 ~ RA6FSD SP2EWQ -07
000000 -3 -0.1 692 ~ UT9LB RZ3OA KO91 000000 -4 -0.1 692 ~ UT9LB RZ3OA KO91
000000 -7 0.2 787 ~ SB7W DL6CHF JO52 000000 -8 0.2 787 ~ SB7W DL6CHF JO52
000000 -9 0.2 968 ~ LZ2KV PE0TS 73 000000 -10 0.2 968 ~ LZ2KV PE0TS 73
000000 -5 0.4 1054 ~ CQ DD2XJ JO53 Germany 000000 -6 0.4 1054 ~ CQ DD2XJ JO53
000000 -14 0.5 1108 ~ OM7ZM UN7IT LO80 000000 -14 0.5 1108 ~ OM7ZM UN7IT LO80
000000 3 0.2 1172 ~ R2ZBK UA3IBD -15 000000 3 0.2 1172 ~ R2ZBK UA3IBD -15
000000 6 0.2 1397 ~ SV8EUB OM7AZA JN98 000000 6 0.2 1397 ~ SV8EUB OM7AZA JN98
000000 -2 0.2 1494 ~ CQ F5RRS JN36 France 000000 -2 0.2 1494 ~ CQ F5RRS JN36
000000 -1 0.7 1562 ~ CU2DX DO1KHW JO30 000000 -1 0.7 1562 ~ CU2DX DO1KHW JO30
000000 -7 0.2 1624 ~ CQ RA3QUE KO91 EU Russia 000000 -7 0.2 1624 ~ CQ RA3QUE KO91
000000 12 0.2 1801 ~ OZ1KNX OZ5D -03 000000 12 0.2 1801 ~ OZ1KNX OZ5D -03
000000 -2 0.2 1884 ~ CU2DX SP9DLY JO90 000000 -2 0.2 1884 ~ CU2DX SP9DLY JO90
000000 -3 0.2 2133 ~ CQ ON4FG JO20 Belgium 000000 -4 0.2 2133 ~ CQ ON4FG JO20
000000 -4 0.3 2183 ~ EA8PP DL5OBC JO52 000000 -5 0.3 2183 ~ EA8PP DL5OBC JO52
000000 0 0.2 2392 ~ DL6WAB DJ0AH +00 000000 -1 0.2 2392 ~ DL6WAB DJ0AH +00
000000 -10 0.3 2479 ~ DO8OL S56ECR JN65 000000 -10 0.3 2479 ~ DO8OL S56ECR JN65
000000 2 0.2 2745 ~ SP2EWQ DL8TG R+07 000000 3 0.2 2745 ~ SP2EWQ DL8TG R+07
000000 -9 0.0 457 ~ <HF19NY> PA0PIW 000000 -9 0.0 457 ~ <...> PA0PIW
000000 -3 0.0 527 ~ CU2DX SP6DXH -19 000000 -3 0.0 527 ~ CU2DX SP6DXH -19
000000 -9 0.4 757 ~ OE3UKW R7IW LN35 000000 -10 0.4 757 ~ OE3UKW R7IW LN35
000000 -20 -0.6 940 ~ EA8PP JH0INP PM96 000000 -21 -0.6 940 ~ EA8PP JH0INP PM96
000000 -6 0.6 1481 ~ CQ DO6AZ JO50 Germany 000000 -6 0.6 1481 ~ CQ DO6AZ JO50
000000 2 0.2 1765 ~ CQ DL8FBD JO40 Germany 000000 0 0.2 1765 ~ CQ DL8FBD JO40
000000 -12 0.1 2324 ~ DK7LE DO5HOK JO42 000000 -12 0.1 2324 ~ DK7LE DO5HOK JO42

View file

@ -19,6 +19,7 @@ n_extra = 0
n_missed = 0 n_missed = 0
n_total = 0 n_total = 0
for wav_file, txt_file in zip(wav_files, txt_files): for wav_file, txt_file in zip(wav_files, txt_files):
print(wav_file)
result = subprocess.run(['./decode_ft8', wav_file], stdout=subprocess.PIPE) result = subprocess.run(['./decode_ft8', wav_file], stdout=subprocess.PIPE)
result = result.stdout.decode('utf-8').split('\n') result = result.stdout.decode('utf-8').split('\n')
result = [parse(x) for x in result if len(x) > 0] result = [parse(x) for x in result if len(x) > 0]
@ -35,7 +36,8 @@ for wav_file, txt_file in zip(wav_files, txt_files):
print(len(result), '/', len(expected)) print(len(result), '/', len(expected))
if len(extra_decodes) > 0: if len(extra_decodes) > 0:
print('Extra decodes: ', list(extra_decodes)) print('Extra decodes: ', list(extra_decodes))
#print('Missed decodes: ', list(missed_decodes)) if len(missed_decodes) > 0:
print('Missed decodes: ', list(missed_decodes))
n_total += len(expected) n_total += len(expected)
n_extra += len(extra_decodes) n_extra += len(extra_decodes)