It seems completely bogus
https://github.com/cmusphinx/sphinxtrain/issues/50
---
 scripts/decode/word_align.py |   96 -------------------------------------------
 1 file changed, 96 deletions(-)

--- a/scripts/decode/word_align.py
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-
-INS = 1
-DEL = 2
-MATCH = 4
-SUB = 3
-undef = '-'
-
-def initialize(ref_words, hyp_words):
-    align_matrix = [[0 for i in range(hyp_words + 1)] for j in range(ref_words + 1)]
-    backtrace_matrix = [[0 for i in range(hyp_words + 1)] for j in range(ref_words + 1)]
-    
-    for j in range(0, hyp_words + 1):
-	align_matrix[0][j] = j
-	backtrace_matrix[0][j] = INS
-
-    for i in range(0, ref_words + 1):
-	align_matrix[i][0] = i
-	backtrace_matrix[i][0] = DEL
-
-    return align_matrix, backtrace_matrix
-
-def align(refs, hyps):
-    ref_words = len(refs)
-    hyp_words = len(hyps)
-    align_matrix, backtrace_matrix = initialize(ref_words, hyp_words)
-
-    for i in range(1, ref_words + 1):
-	for j in range (1, hyp_words + 1):
-	    
-	    if refs[i - 1] != hyps[j - 1]:
-		cost = 1
-	    else:
-		cost = 0
-
-	    ins = align_matrix[i][j - 1] + 1
-	    dels = align_matrix[i - 1][j] + 1
-	    substs = align_matrix[i - 1][j - 1] + cost
-	    m = min(ins, dels, substs)
-	    align_matrix[i][j] = m
-
-	    if m == substs:
-		backtrace_matrix[i][j] = MATCH + cost
-	    elif m == ins:
-		backtrace_matrix[i][j] = INS
-	    elif m == dels:
-		backtrace_matrix[i][j] = DEL
-    
-    backtrace(refs, hyps, align_matrix, backtrace_matrix)
-    return
-    
-def backtrace(refs, hyps, align_matrix, backtrace_matrix):
-    
-    alignment = []
-        
-    inspen, delpen, substpen, match = (0, 0, 0, 0)
-    
-    i = len(refs)
-    j = len(hyps)
-    
-    while not (i == 0 and j == 0):
-	pointer = backtrace_matrix[i][j]
-	if pointer == INS:
-	    alignment.append((undef, hyps[j - 1].upper()))
-	    inspen = inspen + 1
-	    j = j - 1
-	elif pointer == DEL:
-	    alignment.append((refs[i - 1].upper(), undef))
-	    delpen = delpen + 1
-	    i = i - 1
-	elif pointer == MATCH:
-	    alignment.append((refs[i - 1].lower(), hyps[j - 1].lower()))
-	    match = match + 1
-	    j = j - 1
-	    i = i - 1
-	else:
-	    alignment.append((refs[i - 1].upper(), hyps[j - 1].upper()))
-	    substpen = substpen + 1
-	    j = j - 1
-	    i = i - 1
-
-    print "INS", inspen
-    print "DEL", delpen
-    print "SUBST", substpen
-    print "TOTAL", len(refs)
-    print "WER", float(inspen + delpen + substpen) / len(refs) * 100
-
-fn1 = open(sys.argv[1], "r")
-fn2 = open(sys.argv[2], "r")
-
-words1 = " ".join(fn1.readlines()).split()
-words2 = " ".join(fn2.readlines()).split()
-
-align(words1, words2)
