Pārlūkot izejas kodu

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

Jong Wook Kim 2 gadi atpakaļ
vecāks
revīzija
9d646db9d8
1 mainītis faili ar 5 papildinājumiem un 1 dzēšanām
  1. 5 1
      whisper/transcribe.py

+ 5 - 1
whisper/transcribe.py

@@ -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]