Я пытаюсь получить вводимый текст, сохранить его в файл и вызвать другой процесс, который будет применять к нему преобразование текста в речь.Я боролся с кодированием в течение нескольких дней и мне нужна помощь.
Сначала я просто взял исходный текст из запроса POST как есть и сохранил его в файл, но я получал ошибки, подобные этой:
File "/home/.../merlin/src/run_merlin.py", line 1224, in <module>
main_function(cfg)
File "/home/.../merlin/src/run_merlin.py", line 572, in main_function
label_normaliser.perform_normalisation(in_label_align_file_list, binary_label_file_list, label_type=cfg.label_type)
File "/home/.../merlin/src/frontend/linguistic_base.py", line 68, in perform_normalisation
self.extract_linguistic_features(ori_file_list[i], output_file_list[i], label_type)
File "/home/.../merlin/src/frontend/label_normalisation.py", line 26, in extract_linguistic_features
A = self.load_labels_with_state_alignment(in_file_name)
File "/home/.../merlin/src/frontend/label_normalisation.py", line 487, in load_labels_with_state_alignment
utt_labels = fid.readlines()
File "/home/.../merlin/.venv/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa4 in position 0: invalid start byte
Итак, я сделал следующее:
text = text.encode('utf-8').split()
file = codecs.open(filename, 'w+', 'utf-8')
file.write(text.decode('utf-8'))
file.close()
Но одна и та же ошибка продолжает происходить.Я попытался просто file.write(text)
, без декодирования, но это дало мне следующую ошибку:
Can't convert 'bytes' object to str implicitly
Если это поможет, я пытаюсь работать с Merlin , но, как показано вышеКажется, ошибка выдается codecs.py
Python при чтении файла.
РЕДАКТИРОВАТЬ: Следуя предложению Джакомо Катенацци, я изменил код на:
text = text (not encoded)
file = codecs.open(filename, 'w+', 'utf-8')
file.write(text)
file.close()
Но происходит такая же ошибка.Я добавил полную трассировку стека в начало вопроса, так как проблема, кажется, не в том месте, где я думал.