# display a logits csv file as a graph # library("tuneR") # # load waveform wv=readWave("six16000.wav") sig = wv@left / 2^(wv@bit -1) tim = (1:length(sig))/wv@samp.rate # # load logits from GBPhone df=read.csv("six16000.csv",check.names = FALSE) print(summary(df)) # # swap BLANK indicator with last known phone transcript="" lastmax=0; for (i in 1:nrow(df)) { # find max value jmax=0; vmax=-100; for (j in 2:ncol(df)) { if (df[i,j]>vmax) { vmax=df[i,j]; jmax=j; } } #cat(sprintf("row %d jmax=%d name=%s\n",i,jmax,colnames(df)[jmax])); if (colnames(df)[jmax]=="blk") { tmp=df[i,lastmax]; df[i,lastmax]=df[i,jmax]; df[i,jmax]=tmp; } else { if ((jmax!=lastmax)&&(colnames(df)[jmax]!='unk')) transcript=paste(transcript,colnames(df)[jmax]); lastmax=jmax; } } # # convert to image tab=as.matrix(df[,1:46]) tab[which(tab < 0)] = 0 # # plot logits against waveform layout(matrix(c(1,2,2,2),nrow=4,ncol=1, byrow = TRUE)) par(cex=1,mar=c(0,4,2,2)); plot(tim, sig, type="l", col="darkblue", xlab="", ylab="Amp",xaxt="n") par(cex=1,mar=c(5,4,2,2)); image(tab[,1],1:46,tab[,-1],xlab="Time (s)", ylab="Phone",col=gray.colors(256,start=0,end=1,rev=T),cex=1,main=transcript) box()