print '?' if a letter can't be encoded using the system default encoding (#859)

This commit is contained in:
Jong Wook Kim 2023-01-17 23:28:36 -08:00 committed by GitHub
parent 37a4f1be6d
commit 9d646db9d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,6 @@
import argparse
import os
import sys
import warnings
from typing import List, Optional, Tuple, Union, TYPE_CHECKING
@ -165,7 +166,10 @@ def transcribe(
}
)
if verbose:
print(f"[{format_timestamp(start)} --> {format_timestamp(end)}] {text}")
line = f"[{format_timestamp(start)} --> {format_timestamp(end)}] {text}\n"
# compared to just `print(line)`, this replaces any character not representable using
# the system default encoding with an '?', avoiding UnicodeEncodeError.
sys.stderr.buffer.write(line.encode(sys.getdefaultencoding(), errors="replace"))
# show the progress bar when verbose is False (otherwise the transcribed text will be printed)
num_frames = mel.shape[-1]