2桁×2桁の掛け算をただ単に繰り返し暗算してダイエットしようと考えた。
自分の限界はここまでで3桁になると暗算はムリ。
体動かすのもいいが脳をフル回転すればカロリーは消費されるはず。
問題と答えは画面に表示させるのではなく読み上げとしました。
音源は以下のサイトからダウンロードさせて頂きました。
www14.big.or.jp
import os os.add_dll_directory('C:/Program Files/VideoLAN/VLC') import vlc import random def make_sound(num): sound_list = [] num_str = str(num).zfill(4) if not num_str[0]== '0': sound_list.append(os.path.join('sound', num_str[0].ljust(4, '0') + '.wav')) if not num_str[1]== '0': sound_list.append(os.path.join('sound', num_str[1].ljust(3, '0') + '.wav')) if not num_str[2]== '0': sound_list.append(os.path.join('sound', num_str[2].ljust(2, '0') + '.wav')) if not num_str[3]== '0': sound_list.append(os.path.join('sound', num_str[3] + '.wav')) return sound_list while True: q1 = random.randint(10,99) q2 = random.randint(10,99) answer = q1 * q2 q1_list = make_sound(q1) q2_list = make_sound(q2) sound_list_q = q1_list + [os.path.join('sound', 'kakeru.wav')] + q2_list sound_list_a = make_sound(answer) player = vlc.MediaListPlayer() mediaList = vlc.MediaList(sound_list_q) player.set_media_list(mediaList) player.play() get_key = input() if get_key == 'q': break player = vlc.MediaListPlayer() mediaList = vlc.MediaList(sound_list_a) player.set_media_list(mediaList) player.play() get_key = input() if get_key == 'q': break
注意
「os.add_dll_directory」はPython 3.8以降でないと使えません。
2020年10月15日追記
音声データをまとめてダウンロードするスクリプトを書きました。
import os import requests os.mkdir('sound') for i in range(9): url = 'https://www14.big.or.jp/~amiami/happy/download/voice/501_suuji/num00%d_01.wav'%(i+1) filename = '%d.wav'%(i+1) response = requests.get(url) with open(os.path.join('sound', filename), 'wb') as saveFile: saveFile.write(response.content) for i in range(9): url = 'https://www14.big.or.jp/~amiami/happy/download/voice/501_suuji/num0%d0_01.wav'%(i+1) filename = '%d0.wav'%(i+1) response = requests.get(url) with open(os.path.join('sound', filename), 'wb') as saveFile: saveFile.write(response.content) for i in range(9): url = 'https://www14.big.or.jp/~amiami/happy/download/voice/501_suuji/num%d00_02.wav'%(i+1) filename = '%d00.wav'%(i+1) response = requests.get(url) with open(os.path.join('sound', filename), 'wb') as saveFile: saveFile.write(response.content) for i in range(9): url = 'https://www14.big.or.jp/~amiami/happy/download/voice/501_suuji/num%d000_02.wav'%(i+1) filename = '%d000.wav'%(i+1) response = requests.get(url) with open(os.path.join('sound', filename), 'wb') as saveFile: saveFile.write(response.content) url = 'https://www14.big.or.jp/~amiami/happy/download/voice/505_sansuu/kakeru_01.wav' filename = 'kakeru.wav' response = requests.get(url) with open(os.path.join('sound', filename), 'wb') as saveFile: saveFile.write(response.content)
全体をダウンロードするには以下の通り。
import os import glob import shutil import requests import zipfile url = 'http://amitaro.sakura.ne.jp/koesozai/amitarovoice_20180523_01.zip' response = requests.get(url) saveFilePath = 'sound.zip' os.mkdir('sound') with open(saveFilePath, 'wb') as saveFile: saveFile.write(response.content) with zipfile.ZipFile(saveFilePath) as existing_zip: existing_zip.extractall('./sound') os.remove(saveFilePath) sound_files = glob.glob('./sound/501_suuji/*') shutil.move('./sound/501_suuji/', '.') shutil.rmtree('sound')
2022年3月21日追記
「pywin32」を使ったプログラムを書きました。
touch-sp.hatenablog.com