目的

想透過終端機學習英文,可以讓終端機從自己詞庫隨機列出相關英文詞庫資訊,並且可以重覆發音。在零碎時間中隨時練習英文。

實作

這次實作使用的技術如下:

  • say指令: Mac內建指令say可進行英文發音,缺點是聲音太機器聲~~
  • ChatGPT: 透過ChatGPT生成相關領域英文與翻譯,如下:
    請列出100個機器學習相關技術名詞或片語,並以cvs list格式顯示,例如 machine learning, 機器學習, 簡短功能描述
  • Youtube: 終端機產生https://youtube.com/results?search_query=Epoch教學一個連結,可以直接透過YT搜尋相關教學內容。
  • Python: 透過python解析CSV文檔進行循環資訊列印與呼叫英文發音。

  • Bash: 透過Bash縮短成容易記憶與簡短指令。另如輸入le__machine_learningl1時,就會資料在終端機顯次六個隨機英文練習。

原始碼

  • learn_english.py: 主程式
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    import os
    import random
    import subprocess
    import sys
    import urllib.parse

    repeat = 1 # 每個單字重複次數
    learn_count = 6 # 每次學習單字數量

    current_path = os.path.dirname(__file__)

    # 讀取英文清單
    with open(f'{current_path}/learn_english/{sys.argv[1]}.txt', 'r') as f:
    items = [row.strip() for row in f.readlines()]

    if len(sys.argv) > 2:
    learn_count = int(sys.argv[2])

    for index, item in enumerate(random.sample(items, learn_count)):
    item = [o.strip() for o in item.strip().split(',')]
    i = repeat
    while i > 0:
    i -= 1

    # 顯示單字與中文翻譯
    print(f'''{index + 1}. \033[91m{item[0]} \033[0m | \033[34m{item[1]}\033[0m | \033[94m{item[2]}\033[0m''')

    # 顯示YT參考影片
    encoded_string = urllib.parse.quote(f"{item[0]}學習")
    print(f'\033[4mhttps://youtube.com/results?search_query={encoded_string}\033[0m \n')

    # 自訂發音次數
    # subprocess.run(["say",
    # f"-r 150",
    # item[0],
    # ])
    #
    # subprocess.run(["say",
    # f"-r 150",
    # item[0],
    # ])

    subprocess.run(["say",
    f"-r 200",
    item[0],
    ])

    subprocess.run(["say",
    f"-r 200",
    item[0],
    ])

    subprocess.run(["say",
    f"-r 200",
    item[0],
    ])

    subprocess.run(["say",
    f"-r 200",
    item[0],
    ])

    """
    -v: 指定使用的語音類型,例如-v Alex或-v Victoria
    -r: 設定語速,例如-r 150
    -o: 指定輸出檔案的路徑和檔名,例如-o output.aiff
    -f: 指定要轉換的文字檔案路徑,例如-f input.txt
    -i: 指定要轉換的文字,例如-i "Hello, how are you?"
    """
  • learn_english.sh: Bash簡短指令
    1
    2
    3
    4

    alias le__machine_learning="python3 {您的路徑}/learn_english.py machine_learning"
    alias l1="python3 {您的路徑}/learn_english.py machine_learning"