こんにちは。11月よりシステムアイで働き始めました、佐藤です。
今日はセールス部門の私でも簡単にスクリプトが組める素敵な言語、Bashについて紹介していこうと思います。
- 対象となるのは、普段あまりプログラミングはしないものの業務効率化に興味がある方、そしてExcelやVBAから一歩進んだ自動化を目指す非エンジニアの方
- ゴールは「あなたのPCで動くこと」、「3日後のあなたが自分自身でコードをアップデートできること」
以上になります。
実行環境はLinux, Mac, WSL(WindowsでLinuxを動かせるや〜つ)を想定しています。
Windows環境の皆さんすみません、WSLについての説明は長くなってしまうのでここでは割愛します 🙏
Bashとは?
まずは今回の主役、Bashについて何者か理解していきましょう。
Terminalを開いて下記を実行してみましょう。
man bash
manというのはmanualの略です。Terminalで知らないコマンドに直面した時は、
man <command-name> でそのコマンドの説明書が読めます。便利かつ1次情報が取得できる方法なので覚えておくと便利です。
実行すると下記のような文章が出てきます。
BASH(1) General Commands Manual BASH(1)
NAME
bash - GNU Bourne-Again SHell
SYNOPSIS
bash [options] [file]
COPYRIGHT
Bash is Copyright (C) 1989-2005 by the Free Software Foundation, Inc.
DESCRIPTION
Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and
C shells (ksh and csh).
Bash is intended to be a conformant implementation of the Shell and Utilities portion of the IEEE POSIX specification (IEEE Standard 1003.1). Bash can be configured to be POSIX-
conformant by default.
大切なのはcommand language interpreterというところ。これはつまり、とある形式に従って書いたスクリプトをbashが理解して実行してくれるということです。「こんなことがしたいな」と思ったことをコンピュータが理解しやすいように書き換える。基本はそれだけです。新しい外国語を習得する気持ちで、気楽に取り組んでいきましょう 💪
スクリプトを書く際の注意点
例えば、自然言語で「xが5より大きい時に、メッセージを表示する」をbashで表現すると下記のようになります。
x=8
if [[ $x -gt 5 ]]; then
echo "変数 x の値は $x です。これは 5 より大きいです。"
fi
現在はLLMの発展が目覚ましく、AIがそれっぽいコードは書いてくれますが、大切なのはその中身をあなたが理解しているということです。これはつまり、もし将来的に機能追加やバグ修正でアップデートを行う際に、対応できるということ。そのようなコードはあなたの資産になります。
バイブコーディングで1行も理解せずにコードを書いてしまうと、それが正しいロジックを持っているという保証はできませんし、万が一バグを発見した際に修正ができません、、
そうして出来上がったツールを毎日使用し始め、ある日重大な挙動エラーを発見し修正しようとした際、AIが書いてくれたコード1行1行はなんとかして理解していかなければならない負債になります。
コードを書くうえで重要なのは、「必要最小限のスコープ(取り扱い範囲)」に処理を収めることです。AIが生成するコードには、目的に対して余計な処理が含まれることが少なくありません。特に学習初期の段階では、たった 5 行の追加でもコード全体を読み解く負担が大きくなります。そのため、まずは自分が理解できる範囲で、最小限の行数で書くことを心がけるのがおすすめです。
つべこべ言わずなんか作ってみよ〜💪
さて、哲学ばかり語っていても仕方ないので何か作りながらその具体的な過程を見ていきましょう。
ここでは、指定した音声ファイルの文字起こしと内容の要約を一発で行ってくれるスクリプトを組んでみようと思います。斜め読みで、「ああ、こういった手順でコードを書いていくんだな」と流れを認識して頂けたらと思います。
下記は今回使用する技術群です。ご参考までに。
- bash: スクリプトを動かすための基本的なシェル
- ffmpeg: 音声のフォーマットを変換するツール
- whisper-cli: 音声の文字起こしを行うツール
- ollama: テキストの要約を行うLLM
AIにコードを書かせてみる 🤖
手始めにGeminiでコードを吐き出してみました。
#!/ bin/bash
# --- 設定 ---
# Ollamaで使用するモデル名
OLLAMA_MODEL="llama3"
# whisper-cliで使用するモデル名
WHISPER_MODEL="base"
# --- 関数: ヘルプメッセージの表示 ---
show_help() {
echo "使用方法: $0 <音声ファイル>"
echo ""
echo "指定された音声ファイルを処理し、以下の手順を実行します。"
echo "1. 必要に応じてffmpegでwavに変換 (48kHz, モノラル)"
echo "2. whisper-cliで文字起こしを実行"
echo "3. Ollama (モデル: $OLLAMA_MODEL) で文字起こし結果を要約"
echo ""
echo "前提条件: ffmpeg, whisper-cli, ollama がインストールされている必要があります。"
}
# --- 1. 引数の検証 ---
if [ -z "$1" ]; then
show_help
exit 1
fi
INPUT_FILE="$1"
if [ ! -f "$INPUT_FILE" ]; then
echo "エラー: ファイルが見つかりません: $INPUT_FILE"
exit 1
fi
# ファイル名から拡張子を除いたベース名を取得
BASE_NAME=$(basename "$INPUT_FILE" | sed -E 's/\.[^.]+$//')
# --- 2. 必要に応じてWAVに変換 ---
# whisper-cliがサポートする一般的なフォーマット(例: mp3, flac, m4a, wav)を直接使用できる場合は、
# この変換ステップをスキップしても良いですが、ここでは互換性を高めるためにwav変換をデフォルトとしています。
#
# 多くのWhisper実装は16kHzのモノラルwavを要求しますが、ここではより汎用的な48kHzで変換します。
# 16kHzにしたい場合は、-ar 16000 に変更してください。
WAV_FILE="${BASE_NAME}.wav"
TRANSCRIPT_FILE="${BASE_NAME}_transcript.txt"
SUMMARY_FILE="${BASE_NAME}_summary.txt"
# 入力ファイルが既にWAVファイルであるか、または異なるファイル名の場合に変換
if [[ "$INPUT_FILE" != *.wav || "$INPUT_FILE" != "$WAV_FILE" ]]; then
echo "🚀 ステップ 1/3: $INPUT_FILE を $WAV_FILE に変換中..."
if ! ffmpeg -i "$INPUT_FILE" -ar 48000 -ac 1 -y "$WAV_FILE" 2>/dev/null; then
echo "❌ エラー: ffmpegによるWAV変換に失敗しました。"
exit 1
fi
PROCESSED_AUDIO="$WAV_FILE"
else
echo "⏭️ ステップ 1/3: 入力ファイルが既にWAVファイルであるため、変換をスキップします。"
PROCESSED_AUDIO="$INPUT_FILE"
fi
# --- 3. whisper-cliで文字起こし ---
echo "📝 ステップ 2/3: whisper-cli ($WHISPER_MODEL) で文字起こしを実行中..."
# whisper-cliはstdoutに出力するので、パイプでファイルに保存
# -l auto は言語の自動検出を試みます
if ! whisper-cli -m "$WHISPER_MODEL" -l auto --file "$PROCESSED_AUDIO" | awk '/\[.*\]/{next} {print $0}' > "$TRANSCRIPT_FILE"; then
echo "❌ エラー: whisper-cliによる文字起こしに失敗しました。"
exit 1
fi
echo "✅ 文字起こし完了: $TRANSCRIPT_FILE"
# --- 4. Ollamaでサマリを作成 ---
echo "🧠 ステップ 3/3: Ollama ($OLLAMA_MODEL) で要約を生成中..."
# 文字起こしファイルの内容を変数に格納
TRANSCRIPT_CONTENT=$(cat "$TRANSCRIPT_FILE")
# Ollamaへのプロンプト
PROMPT="以下の文字起こしテキストを、箇条書きで簡潔に、日本語で要約してください。\n\n--- 文字起こしテキスト ---\n$TRANSCRIPT_CONTENT"
# ollama run で要約を実行し、ファイルに保存
if ! ollama run "$OLLAMA_MODEL" "$PROMPT" --verbose > "$SUMMARY_FILE"; then
echo "❌ エラー: Ollamaによる要約生成に失敗しました。"
exit 1
fi
echo "✅ 要約完了: $SUMMARY_FILE"
# --- 処理結果の表示 ---
echo "---"
echo "🎉 全ての処理が完了しました。"
echo "元のファイル: $INPUT_FILE"
echo "文字起こしファイル: $TRANSCRIPT_FILE"
echo "要約ファイル: $SUMMARY_FILE"
echo "---"
# 一時的に作成したWAVファイルを削除(元のファイルがWAVでない場合)
if [[ "$INPUT_FILE" != *.wav ]]; then
rm -f "$WAV_FILE"
echo "🧹 一時ファイル $WAV_FILE を削除しました。"
fi
exit 0
それっぽいコードではあるものの、実行しても文字起こし部分が正しく動作しません。また、ローカル環境で完結すれば十分な要件のスクリプトにしては、少し複雑すぎる印象があります。
例えばヘルプメッセージの表示などは、まずは動作確認する段階では不要です。余計な処理の記述は省き、脳内のリソースをできるだけ空けておきましょう。
大切なのは、小さく始めて骨組みを作り、そのあとで肉付けしていくこと。そうすることで、もっとも早くプロトタイプを形にしつつ、後に保守性も高めていけます。
自分でスクリプトを組み直してみる 🧠
そんなわけで、最小限のコードで実装し直してみました。
#!/bin/bash
input_audio_file="$1"
input_filename="${input_audio_file%.*}"
whisper_cli_path="/Your/directory/to/whisper-cli"
whisper_model_path="/Your/directory/to/whisper-cli-model"
# Language selection will be implementd later
whisper_language="ja"
ollama_instruction="Summarize the following audio transcription. You have to summarize it in Japanese."
# Input validation
if [ -z "$input_audio_file" ]; then
echo "Usage: $0 <input_audio_file>"
exit 1
fi
if [ ! -f "$input_audio_file" ]; then
echo "Error: File '$input_audio_file' not found."
exit 1
fi
echo "Audio file found 👍"
# Audio file conversion to wav if necessary
extension=$(echo "${input_audio_file##*.}" | tr '[:upper:]' '[:lower:]')
if [ "$extension" != "wav" ]; then
echo "File '$input_audio_file' isn't a wav file. Converting to wav..."
input_audio_without_extension="${input_audio_file%.*}"
converted_audio_file="${input_audio_without_extension}.wav"
ffmpeg -i "$input_audio_file" "$converted_audio_file"
echo "Conversion complete. Output file: $converted_audio_file"
whisper_input_file="$converted_audio_file"
else
whisper_input_file="$input_audio_file"
fi
# Generate Whisper transcription
whisper_output_name="${input_filename}_transcription"
$whisper_cli_path -m "$whisper_model_path" -f "$whisper_input_file" -l $whisper_language -osrt -of "$whisper_output_name"
# Generate Ollama summarization
whisper_transcript=$(cat "$whisper_output_name".srt)
ollama_prompt=$(printf "%s\n\n%s" "$ollama_instruction" "$whisper_transcript")
ollama_output="${input_filename}_summary.txt"
ollama run gpt-oss:20b "$ollama_prompt" --hidethinking - >"$ollama_output"
103行あったコードが、たったの47行まで短縮できました。
これなら、非技術者の方でも「ちょっと読んでみようかな」と思える分量ですよね。
文字起こし結果
では実際にこのスクリプトを使ってみましょう。
Qiita 投稿用として、パブリックドメインの音源「風立ちぬ」を使って試していきます。
文字起こし結果を見る(チョー長い)
1
00:00:01,000 --> 00:00:03,360
風立ちぬ 堀田つお
2
00:00:03,360 --> 00:00:06,260
こちらはLibriVoxです
3
00:00:06,260 --> 00:00:10,160
LibriVoxの録音はすべてパブリックドメインです
4
00:00:10,160 --> 00:00:14,220
ボランティアについてなど、詳しくはサイトをご覧ください
5
00:00:14,220 --> 00:00:18,900
URLibriVox.org
6
00:00:18,900 --> 00:00:26,000
ルバンスレーブ、イルフォータントイドビーブル、ポールバレリー
7
00:00:26,000 --> 00:00:27,160
助曲
8
00:00:28,600 --> 00:00:33,880
それらの夏の日々、一面にすすきの生い茂った草原の中で
9
00:00:33,880 --> 00:00:37,620
お前が立ったまま熱心に絵を描いていると
10
00:00:37,620 --> 00:00:44,100
私はいつもその片わらの一本の白樺の木陰に身を横たえていたものだった
11
00:00:44,100 --> 00:00:50,880
そうして夕方になって、お前が仕事を済ませて私のそばに来ると
12
00:00:50,880 --> 00:00:55,880
それからしばらく私たちは肩に手をかけ合ったまま
13
00:00:56,380 --> 00:01:06,660
遥か彼方の縁だけ赤音色を帯びた入道雲のむくむくした塊に覆われている地平線の方を眺め合っていたものだった
14
00:01:06,660 --> 00:01:11,180
ようやく暮れようと仕掛けているその地平線から
15
00:01:11,180 --> 00:01:15,400
反対に何者かが生まれていきつつあるかのように
16
00:01:15,400 --> 00:01:20,820
そんな日のある午後、それはもう秋近い日だった
17
00:01:20,820 --> 00:01:26,560
私たちはお前の描きかけの絵を画家に立てかけたまま
18
00:01:26,560 --> 00:01:30,300
その白樺の木陰に寝そべって果物をかじっていた
19
00:01:30,300 --> 00:01:34,840
砂のような雲が空をさらさらと流れていた
20
00:01:34,840 --> 00:01:39,140
その時不意にどっからともなく風が立った
21
00:01:39,140 --> 00:01:47,560
私たちの頭の上ではこの葉の間からちらっと覗いている藍色が伸びたり縮んだりした
22
00:01:47,560 --> 00:01:56,300
それとほとんど同時に草むらの中に何かがばったりと倒れる物音を私たちは耳にした
23
00:01:56,300 --> 00:02:03,500
それは私たちがそこに置きっぱなしにしてあった絵が画家とともに倒れた音らしかった
24
00:02:03,500 --> 00:02:07,120
すぐ立ち上がっていこうとするお前を
25
00:02:07,120 --> 00:02:13,080
私は今の一瞬の何者をも失うまいとするかのように無理に引き止めて
26
00:02:13,080 --> 00:02:15,600
私のそばから離さないでいた
27
00:02:16,600 --> 00:02:19,660
お前は私のするがままにさせていた
28
00:02:19,660 --> 00:02:23,680
風立ちぬいざ行き目やも
29
00:02:23,680 --> 00:02:27,240
ふと口をついて出てきたそんなしくを
30
00:02:27,240 --> 00:02:33,880
私は私に持たれているお前の肩に手をかけながら口の内で繰り返していた
31
00:02:33,880 --> 00:02:39,300
それからやっとお前は私を振りほどいて立ち上がっていった
32
00:02:39,300 --> 00:02:43,100
まだよく渇いてはいなかったカンバスは
33
00:02:43,100 --> 00:02:47,380
その間に一面に草の葉をこびつかせてしまっていた
34
00:02:47,380 --> 00:02:55,660
それを再び画家に立て直しパレットナイフでそんな草の葉を取りにくそうにしながら
35
00:02:55,660 --> 00:03:00,100
まあこんなところをもしお父様にでも見つかったら
36
00:03:00,100 --> 00:03:05,800
お前は私の方を振り向いてなんだか曖昧な微笑をした
37
00:03:05,800 --> 00:03:09,920
もう二三日したらお父様がいらっしゃるわ
38
00:03:09,920 --> 00:03:15,080
ある朝のこと私たちが森の中をさまよっているとき
39
00:03:15,080 --> 00:03:17,420
突然お前がそう言い出した
40
00:03:17,420 --> 00:03:20,700
私はなんだか不満そうに黙っていた
41
00:03:20,700 --> 00:03:28,180
するとお前はそういう私の方を見ながら少ししゃがれたような声で再び口を聞いた
42
00:03:28,180 --> 00:03:32,480
そうしたらもうこんな散歩もできなくなるわね
43
00:03:32,480 --> 00:03:36,200
どんな散歩だってしようと思えばできるさ
44
00:03:36,200 --> 00:03:38,740
私はまだ不満らしく
45
00:03:38,740 --> 00:03:44,340
お前の幾分気遣わしそうな視線を自分の上に感じながら
46
00:03:44,340 --> 00:03:48,280
しかしそれよりももっと私たちの頭上の梢が
47
00:03:48,280 --> 00:03:52,660
何とはなしにざわめいているのに気を取られているような様子をしていた
48
00:03:52,660 --> 00:03:57,100
お父様がなかなか私を話してくださらないわ
49
00:03:57,100 --> 00:04:01,040
私はとうとうジレッタイとでも言うような目つきで
50
00:04:01,040 --> 00:04:02,820
お前の方を見返した
51
00:04:02,820 --> 00:04:07,260
じゃあ僕たちはもうこれでお別れだというのかい
52
00:04:07,260 --> 00:04:09,640
だって仕方がないじゃないの
53
00:04:09,640 --> 00:04:13,700
そう言ってお前はいかにも諦めきったように
54
00:04:13,700 --> 00:04:16,640
私に努めて微笑んでみせようとした
55
00:04:16,640 --> 00:04:20,340
ああその時のお前の顔色の
56
00:04:20,340 --> 00:04:22,760
そしてその唇の色までも
57
00:04:22,760 --> 00:04:25,180
なんと青ざめていたことったら
58
00:04:25,180 --> 00:04:28,560
どうしてこんなに変わっちゃったんだろうな
59
00:04:28,560 --> 00:04:33,500
あんなに私に何もかも任せきっていたように見えたのに
60
00:04:33,500 --> 00:04:37,060
と私は考えあぐねたような格好で
61
00:04:37,060 --> 00:04:41,380
だんだんラコンのゴロゴロしだしてきた狭い山道を
62
00:04:41,380 --> 00:04:44,240
お前を少し先にやりながら
63
00:04:44,240 --> 00:04:46,200
いかにも歩きにくそうに歩いていった
64
00:04:46,200 --> 00:04:50,140
そこいらはもうだいぶ木立が深いと見え
65
00:04:50,140 --> 00:04:52,320
空気は冷え冷えとしていた
66
00:04:52,320 --> 00:04:56,680
ところどころに小さな沢が食い込んだりしていた
67
00:04:56,680 --> 00:05:01,620
突然私の頭の中にこんな考えがひらめいた
68
00:05:01,620 --> 00:05:08,720
お前はこの夏のようなものにもあんなに従順だったように
69
00:05:08,720 --> 00:05:15,380
いやもっともっとお前の父やそれからまたそういう父をも数に入れた
70
00:05:15,380 --> 00:05:21,760
お前のすべてを絶えず支配しているものに素直に身を任せきっているのではないだろうか
71
00:05:21,760 --> 00:05:28,980
節子そういうお前であるのなら私はお前がもっともっと好きになるだろう
72
00:05:28,980 --> 00:05:33,640
私がもっとしっかりと生活の見通しがつくようになったら
73
00:05:33,640 --> 00:05:36,300
どうしたってお前をもらいに行くから
74
00:05:36,300 --> 00:05:41,280
それまではお父さんのもとに今のままのお前でいるがいい
75
00:05:41,280 --> 00:05:46,640
そんなことを私は自分自身にだけ言い聞かせながら
76
00:05:46,640 --> 00:05:49,340
しかしお前のどういうお求めでもするかのように
77
00:05:49,340 --> 00:05:51,540
いきなりお前の手を取った
78
00:05:51,540 --> 00:05:55,560
お前はその手を私に取られるがままにさせていた
79
00:05:55,560 --> 00:05:59,820
それから私たちはそうして手を組んだまま
80
00:05:59,820 --> 00:06:02,780
一つの沢の前に立ち止まりながら
81
00:06:02,780 --> 00:06:06,760
押し黙って私たちの足元に深く食い込んでいる
82
00:06:06,760 --> 00:06:11,340
小さな沢のずっと底の下映えの枝などの上まで
83
00:06:11,340 --> 00:06:14,860
火の光が数知れず枝を差し交わしている
84
00:06:14,860 --> 00:06:19,900
低い寒木の隙間をようやくのことでくぐり抜けながら
85
00:06:19,900 --> 00:06:22,620
まだらに落ちていてそんな木漏れ日が
86
00:06:22,620 --> 00:06:27,120
そこまで届くうちにほとんどあるかないかぐらいになっている
87
00:06:27,120 --> 00:06:30,560
微風にちらちらと揺れ動いているのを
88
00:06:30,560 --> 00:06:33,040
何か切ないような気持ちで見つめていた
89
00:06:33,040 --> 00:06:37,100
それから二、三日したある夕方
90
00:06:37,100 --> 00:06:39,020
私は食堂で
91
00:06:39,020 --> 00:06:41,900
お前がお前を迎えに来た父と
92
00:06:41,900 --> 00:06:44,000
食事を共にしているのを見出した
93
00:06:44,000 --> 00:06:49,620
お前は私の方にぎごちなさそうに背中を向けていた
94
00:06:49,620 --> 00:06:52,120
父の側にいることが
95
00:06:52,120 --> 00:06:55,560
お前にほとんど無意識的に取らせているに違いない
96
00:06:55,560 --> 00:06:56,700
様子や動作は
97
00:06:56,700 --> 00:07:01,440
私にはお前をついぞ見かけたこともないような
98
00:07:01,440 --> 00:07:03,420
若い娘のように感じさせた
99
00:07:03,420 --> 00:07:07,060
たとい私がその名を呼んだにしたって
100
00:07:07,060 --> 00:07:09,200
と私は一人でつぶやいた
101
00:07:09,200 --> 00:07:13,060
あいつは平気でこっちを見向くもしないだろう
102
00:07:13,060 --> 00:07:16,740
まるでもう私の呼んだものではないかのように
103
00:07:16,740 --> 00:07:23,000
その晩、私は一人でつまらなそうに出かけていった散歩から帰ってきたからも
104
00:07:23,000 --> 00:07:27,280
しばらくホテルの人気のない庭の中をブラブラしていた
105
00:07:27,280 --> 00:07:29,820
山ゆりがにおっていた
106
00:07:29,820 --> 00:07:35,340
私はホテルの窓がまだ二つ三つ明かりを漏らしているのを
107
00:07:35,340 --> 00:07:36,500
ぼんやりと見つめていた
108
00:07:36,500 --> 00:07:40,120
そのうち少し霧がかかってきたようだった
109
00:07:40,120 --> 00:07:42,620
それを恐れでもするかのように
110
00:07:42,620 --> 00:07:45,820
窓の明かりは一つ一つ消えていった
111
00:07:45,820 --> 00:07:51,360
そしてとうとうホテル中がすっかり真っ暗になったかと思うと
112
00:07:51,360 --> 00:07:52,940
軽い気しりがして
113
00:07:52,940 --> 00:07:55,360
緩やかに一つの窓が開いた
114
00:07:55,360 --> 00:07:58,980
そしてバラ色の寝巻きらしいものを着た
115
00:07:58,980 --> 00:08:03,580
一人の若い娘が窓の縁にじっと寄りかかり出した
116
00:08:03,580 --> 00:08:06,000
それはお前だった
117
00:08:06,000 --> 00:08:09,720
お前たちが立って行ったのち
118
00:08:09,720 --> 00:08:13,280
日ごと日ごとずっと私の胸を締め付けていた
119
00:08:13,280 --> 00:08:17,060
あの悲しみに似たような幸福の雰囲気を
120
00:08:17,060 --> 00:08:21,500
私は未だにはっきりと蘇らせることができる
121
00:08:21,500 --> 00:08:25,780
私は週日ホテルに閉じこもっていた
122
00:08:25,780 --> 00:08:30,380
そうして長い間お前のために打ち合っておいた
123
00:08:30,380 --> 00:08:32,700
自分の仕事に取り掛かり出した
124
00:08:32,700 --> 00:08:36,420
私は自分にも思いがけないくらい
125
00:08:36,420 --> 00:08:39,500
静かにその仕事に没頭することができた
126
00:08:39,500 --> 00:08:43,800
そのうちにすべてが他の季節に移っていった
127
00:08:43,800 --> 00:08:47,960
そしていよいよ私も出発しようとする前日
128
00:08:47,960 --> 00:08:52,340
私は久しぶりでホテルから散歩に出かけて行った
129
00:08:52,340 --> 00:08:57,680
秋は林の中を見違えるばかりに乱雑にしていた
130
00:08:57,680 --> 00:09:00,680
葉のだいぶ少なくなった木々は
131
00:09:00,680 --> 00:09:06,680
その間から人気の絶えた別荘のテラスをずっと前方に乗り出させていた
132
00:09:06,680 --> 00:09:11,660
菌類の湿っぽい匂いが落葉の匂いに入り混じっていた
133
00:09:11,660 --> 00:09:15,640
そういう思いがけないくらいの季節の推移が
134
00:09:15,640 --> 00:09:22,180
お前と別れてから私の知らぬ間にこんなにも経ってしまった時間というものが
135
00:09:22,180 --> 00:09:24,660
私には異様に感じられた
136
00:09:24,660 --> 00:09:28,200
私の心のうちのどこかしらに
137
00:09:28,200 --> 00:09:30,800
お前から引き離されているのは
138
00:09:30,800 --> 00:09:34,140
ただ一時的だといった確信のようなものがあって
139
00:09:34,140 --> 00:09:37,440
そのためこうした時間の推移までが
140
00:09:37,440 --> 00:09:42,580
私には今までとは全然違った意味を持つようになり出したのであろうか
141
00:09:42,580 --> 00:09:48,500
そんなようなことを私はすぐ後ではっきりと確かめるまで
142
00:09:48,500 --> 00:09:51,260
何やらぼんやりと感じ出していた
143
00:09:51,260 --> 00:09:55,040
私はそれから十数分後
144
00:09:55,040 --> 00:09:57,340
一つの林の尽きたところ
145
00:09:57,340 --> 00:10:00,000
そこから急に打ち開けて
146
00:10:00,000 --> 00:10:03,260
遠い地平線までも一帯に眺められる
147
00:10:03,260 --> 00:10:07,340
一面にすすきの生い茂った草原の中に
148
00:10:07,340 --> 00:10:08,440
足を踏み入れていた
149
00:10:08,440 --> 00:10:12,640
そして私はその傍らの
150
00:10:12,640 --> 00:10:14,760
すでに葉の黄色くなりかけた
151
00:10:14,760 --> 00:10:17,840
一本の白樺の木陰に身を横たえた
152
00:10:17,840 --> 00:10:20,720
そこはその夏の日々
153
00:10:20,720 --> 00:10:23,500
お前が絵を描いているのを眺めながら
154
00:10:23,500 --> 00:10:27,500
私がいつも今のように身を横たえていたところだった
155
00:10:27,500 --> 00:10:33,560
あの時にはほとんどいつも入道雲に遮られていた地平線の辺りには
156
00:10:33,560 --> 00:10:38,140
今はどこか知らない遠くの山脈までが
157
00:10:38,140 --> 00:10:42,380
真っ白な穂先をなびかせたススキの上を分けながら
158
00:10:42,380 --> 00:10:45,620
その輪郭を一つ一つくっきりと見せていた
159
00:10:46,920 --> 00:10:51,760
私はそれらの遠い山脈の姿をみんな暗記してしまうくらい
160
00:10:51,760 --> 00:10:54,700
じっと目に力を入れて見入っているうちに
161
00:10:54,700 --> 00:10:56,980
今まで自分のうちに潜んでいた
162
00:10:56,980 --> 00:11:00,980
自然が自分のために極めて置いてくれたものを
163
00:11:00,980 --> 00:11:04,140
今こそやっと見出したという確信を
164
00:11:04,140 --> 00:11:08,360
だんだんはっきりと自分の意識に昇らせ始めていた
165
00:11:08,360 --> 00:11:10,800
ショー終わり
166
00:11:10,800 --> 00:11:13,880
この録音はパブリックドメインです
要約結果
【要約】
物語は夏の日々を舞台に、主に「風立ちぬ」というタイトルで語られます。主人公と友人(または恋人)がすすき畑の白樺の木陰で絵を描きながら過ごし、風が吹き、夕暮れの赤い雲と地平線を見つめる情景が繰り返されます。二人はお互いを支え合いながら、未来や別れについて語り合い、時折離れ離れになる苦しみや不安を共有します。物語は季節の移り変わりと共に、友情や愛、そして失われた存在への郷愁を描き、主人公が時間と共に成長し、記憶を抱きながら自らの人生を見つめ直すという結末へと進んでいきます。
まとめ
Qiita投稿用にパブリックドメインの朗読データを使ってテストしてみたのですが、「情緒あふれる文学作品をわずか数行で要約する」という、なんともサイコパスな結果になってしまいました。
とはいえツールとしての実用性は高く、実際にはアイデア出しの録音音声などを使用しています。自分のメモでは抜け落ちていた部分も綺麗にまとめてくれて、なかなか使えます。ローカルでコマンド一発、文字起こしから要約、ファイルの保存まで全自動で完結するため、手軽で重宝しています。
本当はもう少し細部の説明もしたかったのですが締め切りが、、
スクリプトを書くうえでの大まかな流れや考え方が、少しでも伝わっていれば幸いです。
それではみなさんハッピーメリークリスマス 🎄
