■目指したこと:
- NATO phonetic alphabetなるものがある。そのロシア語版を作成すること。
- 希望すれば、音声自動読み上げ機能を利用して表示されたロシア語の発音を聞けること。
■構成要素:
main.py
voicing_rus.py
nato_phonetic_alphabet_rus.csv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#main.py import pandas as pd import voicing_rus as vr data = pd.read_csv("nato_phonetic_alphabet_rus.csv") df = pd.DataFrame(data) rus_dict = df.to_csv(index=False) #print out without index print(rus_dict) phonetic_dict = {row.letter: row.word for (index, row) in data.iterrows()} print(phonetic_dict) rus_word = input("Enter a word: ").upper() output_list = [phonetic_dict[letter] for letter in rus_word] print(output_list) question = input("Do you want to listen to pronunciation? Д(Да)/Н(Нет): ").upper() if question == "Д": #了解!今から発音するから聞いててね。 vr.voicing_rus_words("Да, хорошо! Пожалуйста, послушайте.") vr.voicing_rus_words(output_list) else: #えっ?音声読み上げ必要ないの?そうなんだ、じゃあいいよ。頑張って! vr.voicing_rus_words("Нет? Ладно. Тогда все. Удачи!") |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#voicing_rus.py import pyttsx3 #以下のコードで、自分のPCにダウンロードされている音声読み上げができる言語をPrintする。 #その結果、”'Microsoft Irina Desktop - Russian'”をnameとして指定すればよいことが分かった。 engine = pyttsx3.init() voices = engine.getProperty('voices') for voice in voices: print(voice) #以下の関数をmain.pyで呼び出す。 def voicing_rus_words(self): #selfを追加 engine = pyttsx3.init() voices = engine.getProperty('voices') for voice in voices: print(voice) if voice.name == 'Microsoft Irina Desktop - Russian': engine.setProperty('voice', voice.id) engine.setProperty('voice', 'rus') engine.say(self) #selfを追加 engine.runAndWait() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#nato_phonetic_alphabet_rus.csv letter,word А,Анна Б,Борис В,Василий Г,Григорий Д,Дмитрий Е,Елена Ж,Женя З,Зинаида И,Иван Й,Иван краткий К,Константин Л,Леонид М,Михаил Н,Николай О,Ольга П,Павел Р,Роман С,Семён Т,Татьяна У,Ульяна Ф,Фёдор Х,Харитон Ц,цапля Ч,человек Ш,Шура Щ,щука Ъ,твёрдый знак Ы,еры Ь,мягкий знак Э,эхо Ю,Юрий Я,Яков |
■作成の流れ:
音声読み上げに必要となる”pyttsx3をInstallした(”pip install pyttsx3”)
自分の利用しているPCにダウンロードされている音声読み上げ機能を確認し、ロシア語の”name”を確認する。その結果、”Microsoft Irina Desktop – Russian”をnameとして指定すればよいことが分かった。
以下のWikipediaサイトからロシア語版のphonetic alphabetリストを作成し、csvファイルに保存した。
Russian spelling alphabet – Wikipedia
下記リンクのウェブサイトを参考にしながら、main.py, voicing_rus.pyファイルを作成した。
■苦労したこと:
voicing.pyで、関数内に”self”を呼び出す必要があったが、その入力がないために以下のエラーが発生したこと。必要な個所に”self”を入力することでエラーを解消できた。なお、他の任意のアルファベットを代用してもエラーを解消することができた。
それで、”self”を利用するのは一つの流儀であり、必ずしもselfでなくてもよい。でも、きっとselfとしておくのがマナーである、と理解した上で”self”を利用しています。
エラー画面:
“takes 0 positional arguments but 1 was given”
■作成するにあたり参考にしたサイト
Pythonの学習に利用しているUdemyのコース:
100 Days of Code: The Complete Python Pro Bootcamp for 2023 | Udemy
Day26: 244. Solution & Walkthrough for the NATO Alphabet Project
上記以外にYoutubeで参考にしたサイト:
■エラー解消のために参考にしたサイト
https://office54.net/python/error/python-typeerror-argument
python – TypeError : takes 0 positional arguments but 1 was given – Stack Overflow