耳で聞くHacker News

# 耳で聞くHacker News

お久しぶりです。
最近はAI関連のnewsのアップデート情報ばかりで「すごい！！」と逐次感動しつつ、少々疲れてきた今日この頃です。


一昨年の１０月ぐらいからパラグライダーを始めて、車での移動時間が増え、podcastを聴く機会が増えました。
講習場に行くのにrebuild.fmの１エピソードが消化できるぐらいの距離があり、ストックがすぐになくなります。
また耳を使った情報収集は通勤時間やながら作業中にもできるので効率がいいなと感じています。


そこで少し前に話題になっていた、notebook lmのpodcast（音声概要）機能を使って気になる記事をpodcastとして配信したらいいんじゃないか？？と思いやってみました。

## 成果物
「別にどんなふうに作ったかは知らん。何を作ったのかみたい」って人用に先にリンクを貼っておきます。  

- ホームページ: https://tech-podcast.kmidel.com/  
- Spotify: https://open.spotify.com/show/52epBApgXMw9dAdiGODoVG  
- Apple Podcast: https://podcasts.apple.com/us/podcast/%E8%80%B3%E3%81%A7%E8%81%9E%E3%81%8Fhacker-news/id1816612175?itscg=30200&itsct=podcast_box_badge&ls=1&mttnsubad=1816612175&ct=from-tech-podcast.kmidel.com  

## で、何をつくったのか？
毎日hacker newsのトップになっている記事を紹介してくれるpodcastを自動で生成、Cloudflare R2にアップロードするものを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203831/c2d619dd-c50d-4e0e-81d9-118bb8bd7581.png)

### difyって何？？

https://dify.ai/jp
> Difyは、大規模言語モデル（LLM）を活用したAIアプリケーションの開発を強力に支援するプラットフォームです。プログラミングの専門知識が少なくても、直感的なUIを通じて、チャットボット、テキスト生成ツール、ワークフロー自動化など、様々なAIアプリケーションを簡単に構築・運用することができます。
>
>具体的には、Difyは以下の機能を提供します。
>
>- GUIベースのプロンプトエンジニアリング:  
ドラッグ＆ドロップ操作でプロンプトを設計し、LLMの挙動を細かく制御できます。  
>- RAG (Retrieval Augmented Generation) のサポート:   
外部データソースをLLMに連携させることで、より正確で最新の情報を基にした応答を生成できます。これにより、特定のドキュメントや知識ベースに基づいたチャットボットなどを容易に作成可能です。
>- LLMの統合:  
OpenAI、Anthropic、Googleなどの主要なLLMプロバイダーと簡単に連携できます。
>- アプリケーションのデプロイと運用:  
開発したAIアプリケーションを簡単にデプロイし、パフォーマンスの監視や改善を行うためのツールも提供します。
>- オープンソース:  
コミュニティ版はオープンソースとして提供されており、オンプレミス環境やプライベートクラウドに自由にデプロイして利用できます。
> (by gemini)

この辺りの記事が詳しく解説されているのでご確認ください。
* https://qiita.com/kenta1984/items/2a3555fe139fc8197b72

[マネージドサービス](https://dify.ai/jp/pricing)もあるようですが、今回は自宅にproxmox on k8sクラスターが検証用に動いているので、	k8s上で動かしました。

![dify.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203831/ac838dcb-3f7b-4b79-9342-0c134761b247.png)

### TTS比較
podcastを生成するのに一番重要な部分のtext to speachのについて初めなんとかしてnotebooklmの音声概要の機能をAPI的に利用しようと試行錯誤していたのですが、諦めてcloud serviceで提供されているTTS APIを利用して実現しました。

初めは Azure TTS APIを利用していたのですが、先日のGoogle I/Oにてgemini-2.5-pro-preview-tts と gemini-2.5-flash-preview-tts が発表されたためこちらに乗り換えました。
https://ai.google.dev/gemini-api/docs/speech-generation

クオリティが格段に上がっているためコスト面ではお金がかかってきますが、満足しています。  

Azure API:  
https://tech-podcast.kmidel.com/podcast/episode/1/  
gemini-2.5-flash tts:  
https://tech-podcast.kmidel.com/podcast/episode/116/

### 台本サンプル
台本の出力は以下の形式で出力することをプロンプトに入れて出力、gemini ttsに渡しています。

```
"{
  "script": {
    "scripts": [
      {
        "speaker": "keita",
        "text": "皆さん、こんにちは！テクノロジーの最前線をお届けする「Hacker News TODAY PODCAST」の時間です。"
      },
      {
        "speaker": "yuri",
        "text": "アシスタントのyuriです。keitaさん、今日もよろしくお願いします！"
      },
      {
        "speaker": "keita",
        "text": "こちらこそ、yuriさん。今日は、FreeBSDというオープンソースOSに対するAmazonの資金提供に関する記事を取り上げます。題して「A year of funded FreeBSD development」です。"
      },
      .....
      {
        "speaker": "yuri",
        "text": "はい。今日は貴重なお話を聞かせていただき、ありがとうございました。"
      },
      {
        "speaker": "keita",
        "text": "こちらこそ、yuriさん、ありがとうございました。それでは皆さん、また次回の「Hacker News TODAY PODCAST」でお会いしましょう！"
      }
    ]
  },
"
}"

```

## まとめ
hecker newsのtop記事を自動でpodcastにする仕組みができました！
これで毎週2,3時間のドライブの時間も快適にインプットが捗ります笑

「耳で聞くHacker News」はベストエフォートで運営しようと考えています。
まだまだ改善するべきところはありますが、podcastを購読、聞いていただけると、今後の励みになります。  
ぜひ！
https://tech-podcast.kmidel.com/subscribe/  


現在はコストも考えて１日１話を基本に生成するようしています。  
もしサポートいただける方が居ましたら、[ホームページ](https://tech-podcast.kmidel.com/)にて"Buy Me a Coffee"のlinkを貼ってあるのでサポートいただけると嬉しいです。  
今後コストを見つつ複数話投稿できるようになればと思っています笑

以上ありがとうございました。