

Proyek ini adalah hasil dari kombinasi dan lanjutan pengembangan dua proyek saya sebelumnya:
Pada tahun 2023, di tengah -tengah hype chatgpt, saya mendapat inspirasi untuk menggabungkan dua proyek saya sebelumnya menjadi satu pemain podcast dan memperbaikinya dengan memanfaatkan API AI yang terbuka.
FYI: Spotify kemudian merilis solusi serupa untuk subtitle dan bab podcast, baca lebih lanjut di sini.
Teknologi yang digunakan dalam proyek ini dapat ditemukan dalam tabel di bawah ini.
| Teknologi | Gunakan kasing |
|---|---|
| Bereaksi | Kerangka kerja frontend |
| Tailwind | Perpustakaan Styling CSS |
| Python | Backend untuk menangani logika transkripsi |
| Labu | Menghubungkan backend python dengan react frontend |
| Spotify API | Untuk mendapatkan informasi tentang episode podcast |
| API Pengenalan Pidato Google | Mengubah ucapan menjadi teks, yaitu menyalin podcast |
| Buka API GPT 3.5 AI | Transkrip segmen ke bab -bab berdasarkan transkrip |
Saya ingin belajar cara menghubungkan frontend bereaksi ke backend python jadi saya menggunakan proyek ini sebagai kesempatan belajar untuk melakukan itu. Akibatnya, saya melakukan beberapa rekayasa berlebihan dengan membangun API saya sendiri untuk menangani transkripsi pada backend Python alih-alih memanggil API plug-and-play di frontend.
Lebih khusus lagi, frontend melakukan panggilan ke Spotify API dan mendapatkan URL podcast yang diminta. URL dikirim sebagai permintaan ke backend yang mengunduh podcast sebagai MP3 untuk memprosesnya.
Alasan mengapa MP3 perlu diproses adalah karena saya perlu mendapatkan cap waktu untuk setiap kalimat untuk menampilkannya pada waktu yang tepat di subtitle. Saya mengidentifikasi kalimat dalam transkrip dengan mendengarkan keheningan (<14 desibel) lebih dari 500 ms. Ketika keheningan diidentifikasi, saya membagi file audio asli untuk membuat satu set file audio yang lebih kecil, satu untuk setiap kalimat. Dengan melakukan ini, saya dapat menghitung waktu awal dan akhir setiap kalimat dengan melihat panjang setiap file audio yang lebih kecil, lihat gambar di bawah ini.

Semua file audio sekarang dikirim ke API pengenalan ucapan Google dan mengembalikan serangkaian audio yang ditranskripsikan. Transkripsi sekarang dikirim kembali ke frontend yang membuat permintaan untuk membuka API AI untuk segmen transkrip dan mengidentifikasi topik potensial untuk membagi episode menjadi beberapa bab.
API Spotify tidak memungkinkan Anda untuk mengunduh episode podcast lengkap, hanya pratinjau 30 detik. Ini membuat aplikasi sangat terbatas untuk digunakan dan karena itu hanya bukti konsep.
Buat file .env di direktori root dan tambahkan tombol API Anda:
REACT_APP_SPOTFY_CLIENT_ID=YOUR_SPOTIFY_CLIENT_ID_GOES_HERE
REACT_APP_OPEN_AI_KEY=YOUR_OPEN_AI_KEY_GOES_HERE
Gunakan perintah berikut untuk menjalankan proyek. Mulai frontend di satu terminal dan backend di terminal lain.
export FLASK_APP=backend
export FLASK_DEBUG=1
flask run
cd frontend
npm start
Tonton demo proyek 1 menit di sini.

Halaman Beranda dengan Otentikasi Spotify

Halaman penemuan

Layar Memuat

Layar episode

Layar episode

Subtitle di layar penuh

Tinjauan Bab Dalam Suatu Episode

Pemain audio dibagi dengan bab

Transkrip Cari