#!/bin/sh
#] 
#] *********************
#] $ bash "$d_bin"'speech to text.sh' 
# www.BillHowell.ca  06Jan2024 initial 
# view in text editor, using constant-width font (eg courier), tabWidth = 3


#24************************24




#24************************24
# List of operators, generated with :
# $ grep  "^#]"  "$d_bin"'speech to text.sh' |  sed "s/^#\]/  /" 

#




#08********08
# Setup 

source  "$d_bin"'fileops.sh'



#08********08
# code 

#] pJson_to_pFiel()  - pull fields from json file, separate by tab for each record
#]    json file created by Google transcript :
#]    via https://console.cloud.google.com/speech/transcriptions/

	pJson_to_pFiel()
{
	date_ddmmmyyyy_hms=$(date +"%0e%0b%0Y %0kh%0Mm%0Ss")

	# capture titles - 06Jan2024 for now I manually put tiles into pTitl
	#cat  "$pJson"  |  tr  '{'  \\n  |  sed  s"|{\(.*\)\"word\":\"\(.*\)\"\,\"confidence\(.*\)|\2 |g"  >"$pTitl"

	echo  >"$pFiel"  '# pJson_to_pFiel()  - of json file created by Google transcript'
	echo >>"$pFiel"  "# $date_ddmmmyyyy_hms"
	cat  >>"$pFiel"  "# $pTitl"
	echo >>"$pFiel"  ''

	# convert json to tab-separated columns
	cat  "$pJson"  |  tr  '{'  \\n  |  sed 's|}\,||g'  |  sed  s'|\"startOffset\":\"\(.*\)s\"\,\"endOffset\":\"\(.*\)s\"\,\"word\":\"\(.*\)\"\,\"confidence\":\(.*\)|\1\t\2\t\3\t\4|g;s|}]}],\(.*\)|\n|;s|\"alternatives\(.*\)||;s|\"transcript\(.*\)||;s|\"results\(.*\)||;s|\"resultEndOffset\(.*\)||;s|\"resultEndOffset\(.*\)||'  >>"$pFiel"
}


#] pFiel_to_pSlct()  - extract selected fields for all records, from all-fields file

	pFiel_to_pSlct()
{
	date_ddmmmyyyy_hms=$(date +"%0e%0b%0Y %0kh%0Mm%0Ss")

	echo  >"$pSlct"  "# select_fields()  $date_ddmmmyyyy_hms"
	echo >>"$pSlct"  ''

	# extract [time, word] in fields
	cat  "$pFiel"  |  sed  s"|\(.*\)\t\(.*\)\t\(.*\)\t\(.*\)|\1\t\3 |g"  >>"$pSlct"
}


#] pSlct_to_pSntc()  - 
#		assumes Google translate's empty lines pool sentences 
#		entences might result with current Google transcript setup?

	pSlct_to_pSntc()
{
	date_ddmmmyyyy_hms=$(date +"%0e%0b%0Y %0kh%0Mm%0Ss")
	p_tmp="$d_temp"'pSlct_to_pSntc temp.txt'

	echo  >"$pSntc"  "# pSlct_to_pParg()  $date_ddmmmyyyy_hms"
	echo >>"$pSntc"  ''

	# extract words only
	#cat  "$pSlct"  |  sed  's|\(.*\)\t||g'  >>"$p_tmp"

	wordOld=''
	bolStrt=0
	while IFS='' read -r line; do
		if  [  "$line" == '' ]; then  
			if  [ "$bolStrt" == 1 ]; then 
				echo  >>"$pSntc"  "$wordOld"
				wordOld=''
			fi
			echo  >>"$pSntc"  "$line"
			bolStrt=0  
		else
			if  [ "$bolStrt" == 0 ]; then 
				wordOld="$line"
			else
				wordNew=$(  echo  "$line"  |  sed  's|\(.*\)\x9||'  )
				wordOld="$wordOld$wordNew"
			fi
			bolStrt=1  
		fi
	done < "$pSlct"
}


#] pSntc_to_pParg()  - archive pParg, then copy pSntc to pParg, for manual edit
#]    manual edit of transcript, collect sentences into paragraphs
#]    consolidate sentences (1st with timeStamp), <oldWrd,newWrd> corrections,punctuate etc

	pSntc_to_pParg()
{
	date_ymdhms=$(date +"%0y%0m%0d %0kh%0Mm%0Ss")
	echo  >>"$p_log" "$date_ymdhms chmod_Howell"
  
	if	[ -f "$pParg" ]; then
		pInn_archiveLocal_pDateMod  "$pLog384" 
	fi
	cp -p  "$pSntc"  "$pParg"
}



#08********08

#] setup_files_bag()  - Google transcript

	setup_files_bag()
{
	d_inn="$d_web"'ProjMini/Kaal- Structured Atom Model/vidAudios/'
	d_out="$d_web"'ProjMini/Kaal- Structured Atom Model/'
	pJson="$d_inn"'transcripts_Edwin Kaal The Proton-Electron Atom.mp3.cut_transcript_65b68b98-0000-2f49-9bfb-582429cb079c.json'
	pTitl="$d_temp"'speech_to_text colHead.txt'
	pFiel="$d_inn"'Kaal: The Proton-Electron Atom, fieldL.txt'
	pSlct="$d_inn"'Kaal: The Proton-Electron Atom, transcript.txt'
	pSntc="$d_inn"'Kaal: The Proton-Electron Atom, sentenceL.txt'
	pParg="$d_out"'Kaal: The Proton-Electron Atom, paragraphL.txt'

}


#] setup_files()  - define key variables

	setup_files()
{
	d_inn="$d_web"'ProjMini/Kaal- Structured Atom Model/vidAudios/'
	d_out="$d_web"'ProjMini/Kaal- Structured Atom Model/'
	pJson="$d_inn"'transcripts_Edwin Kaal The Proton-Electron Atom.mp3.cut_transcript_65b68b98-0000-2f49-9bfb-582429cb079c.json'
	pTitl="$d_temp"'speech_to_text colHead.txt'
	pFiel="$d_inn"'Kaal: The Proton-Electron Atom, fieldL.txt'
	pSlct="$d_inn"'Kaal: The Proton-Electron Atom, wordL.txt'
	pSntc="$d_inn"'Kaal: The Proton-Electron Atom, sentenceL.txt'
	pParg="$d_out"'Kaal: The Proton-Electron Atom, paragraphL.txt'
}



#08********08
# Procedures -  To run :



#08********08
# run - select one of options

	setup_files

#	pJson_to_pFiel			# pull fields from json file, separate by tab for each record
#	pFiel_to_pSlct			# extract selected fields for all records, from all-fields file 
#	pSlct_to_pSntc			# assumes Google translate's empty lines pool sentences
#	pSntc_to_pParg			# archive pParg, then copy pSntc to pParg, for manual edit




# $ bash  "$d_bin"'speech to text.sh'  

# enddoc
