I am trying to get what a person says in Arabic and then print that to the terminal.
When I try to speak to the mic, any Arabic word I say gets printed as ????
with the number of question marks depending on the number of letters of what I said. I added the print(get_display(arabic_reshaper.reshape("مرحبا")))
to see if I can print Arabic characters in general and this is what shows in my terminal:
Listening...
Error: 'charmap' codec can't encode characters in position 0-4: character maps to <undefined>
Say that again...
I have already set my settings of the text editor to be of UTF-8. This is my code:
import speech_recognition as sr
import arabic_reshaper
import sys
from bidi.algorithm import get_display
def command():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 0.6
audio = r.listen(source)
try:
print(get_display(arabic_reshaper.reshape("مرحبا")))
ask = r.recognize_google(audio, language='ar-SA')
reshaped_ask = arabic_reshaper.reshape(ask)
bidi_text = get_display(reshaped_ask)
try:
if sys.stdout.encoding.lower() == 'utf-8':
print(bidi_text)
else:
print(bidi_text.encode(sys.stdout.encoding, errors='replace').decode(sys.stdout.encoding))
except UnicodeEncodeError:
print(bidi_text.encode(sys.stdout.encoding, errors='replace').decode(sys.stdout.encoding))
except Exception as e:
print("Error:", str(e))
print("Say that again...")
return ""
return ask
command()
When I try to run the following code:
reshaped_text = arabic_reshaper.reshape("مرحبا")
bidi_text = get_display(reshaped_text)
print(bidi_text)
I get مرحبا
printed from left to right and not right to left.