Auxiliary Functions

Auxiliary Function有兩個函數parse_filepath()batch_transcribe_speechFile()

函數parse_filepath()功能為把音頻檔案的路徑拆成資料夾名稱跟檔案名稱。輸入為speech_file,輸出為資料夾path跟檔案名稱filename

035 def parse_filepath(speech_file):
036     if sys.platform == 'win32':
037         m = re.match(r'(.+)\\(.+)', speech_file)
038     else:
039         m = re.match(r'(.+)/(.+)', speech_file)
040     
041     path = m.group(1)
042     filename = m.group(2)
043    return path, filename
...
124 def batch_transcribe_speechFile(speechFileQueue,existSpeechFileList,choices_list,timestamp_writer, nr, beta=True):
125     #print('speech files in Queue:')
126     #print(speechFileQueue)
127     for i, speechFile in enumerate(speechFileQueue):
128         
129         if nr:
130             ''' audio noise reduction ''' 
131             path, filename = parse_filepath(speechFile)
132             ofilename = os.path.join(path,'nr',filename)
133             if not os.path.isfile(ofilename):
134                 samp_freq, x = wavfile.read(speechFile)
135                 y = butter_bandpass_filter(x, 300, 3000, samp_freq, order=6)
136                 y = y.astype(x.dtype)
137                 wavfile.write(ofilename, samp_freq, y)
138 
139         else:
140             ofilename = speechFile
141         
142         ''' transcription '''
143         choices = transcribe_file_with_word_time_offsets(ofilename, timestamp_writer, beta=beta)
144         choices_list.append(choices)
145         
146         existSpeechFileList.append(speechFile)
147         df = pd.DataFrame({'filename':existSpeechFileList, 'sentence':choices_list})
148         df = df.sort_values(by=['filename'])
149         df.to_csv(output_csv_filename)
150         timestamp_writer.save()

行36-39判斷作業系統是否是window,原因是因為window的路徑分隔線()跟其他作業系統的分隔線(/)不同。

函數batch_transcribe_speechFile()目的是協助函數transcribe_file_with_word_time_offsets(),處理在大量音頻下,批次處理的能力。1. 跳過已經轉譯過的音頻 2. 縮小單個xlsx裡的音頻轉譯結果(25個音頻1個xlsx),方便閱讀 3. 使用band-pass filter降低雜訊。

函數batch_transcribe_speechFile()輸入為:\colon

  • speechFileQueue 程式處理的檔案序列
  • existSpeechFileList 過去已經轉譯過的音頻檔名列表
  • choices_list 音頻轉譯文字結果列表,包含已經轉譯過音頻的結果
  • timestamp_writer xlsx檔案writer物件
  • nr noise reduction flag (是否要使用noise reduction)
  • beta=True beta version flag (是否使用google speech-to-text beta版)

行127-150為一個for loop,從speechFileQueue逐步取出單一音頻檔處理。

行131-137是當使用者希望對音頻降噪時,呼叫函數butter_bandpass_filter,保留人聲頻率範圍(300-3000Hz),產生一個降噪版的音頻,儲存在原音頻資料下新增的nr子資料夾,檔名還是跟原音頻檔名相同。

行139-140代表使用者希望使用原音頻,檔案路徑ofilename跟原檔案路徑speechFile相同。

行143 呼叫函數transcribe_file_word_time_offset(),輸出該音頻轉譯出來的結果清單choices

行144把新增的choices清單加到大清單choices_list

行146把處理完的檔案speechFile加入已經處理的檔案清單existSpeechFileList,代表speechFile被處理完。

行147建立一個檔名對應轉譯結果的table,以pandas.dataframe方式處理

新增圖

行148把df重新根據檔名排序,因爲行144,146新增時,不會考慮排序,一律把新增資料排在列表最後面。

行149把檔名對應轉譯結果的table存成csv檔 行150把單字的時間與信心指數的table存成xlsx檔。

results matching ""

    No results matching ""