Package: pickpod
PickpodIntegrated tools to transfer internet audio to text, extract unpopular views, and pick up podcasts for you.Pickpodhelps to build your private wiki efficiently.This repository contains:APythonpackage that can easily call specified tasks.AStreamlitapp that provides a web UI to manage your podcast library.Several package usage examples of complete tasks for target audio.Welcome to our commercial deployment:Pickpod, implementation withJavaand microservice architecture.Compared to the personal open-source prototype in this repository, the commercial version provides powerful performance and stable services.Table of ContentsBackgroundInstallUsageExamplesRelated EffortsMaintainersContributingLicenseBackgroundThe goals forPickpodare:High-quality integration withyt-dlp,faster-whisper, andpyannote-audio, so that users can quickly obtain the text result of the corresponding audio transcription by simply inputting a link or a local file.The convenient use ofLISTEN NOTES Podcast APIandClaude API. After completing the necessary settings and making a task,Pickpodcan get the list of podcasts the users are interested in regularly according to the specified release period. Thus, the transcription task can be completed in batch. Then,Pickpodcan pick up podcasts based on the evaluation through the extracted keywords, summaries, views, or only theLLM. Users can reference and modify the recommendation according to the sorting results of podcasts.Rapid deployment for local environments, so that when the user launches the project, all features are easily accessible in the browser.InstallSinceffmpeg and ffprobeare strongly recommended byyt-dlp, it is necessary to install theffmpeg binarywithin the system before installingPickpod.You can refer to the installation method provided bypydub, or go to theffmpeg download pageandffmpeg compilation guidefor more.Moreover, please see the note abouthugging faceaccess token fetching inpyannote-audiofor more information on usingspeaker-diarization.If you need to filter the list of podcasts to be batch transcribed based on customized rules or useLLMto analyze the transcribed text, please refer to theAPIdocumentation provided byListen NotesandAnthropicto obtain the necessaryAccess Keys, respectively.❗️WarningDue toPickpodstrictly restricting the version of usedPythonpackages, some packages may automatically solve conflicts and remove some of the packages that you have installed before. To avoid unnecessary conflicts or damage to your environment, we strongly recommend installingPickpodin a brand newPythonenvironment or aPythonvirtual environment.PythonYou don't need this source code if you just want to use the package. Just run:$pipinstall--upgradepickpodIf you want to modify the package, install from source with:$pipinstall./pickpodIf you want to run theStreamlitapp that provides a web UI, install from source with:$pipinstall-r./pickpod/app/requirements.txt
$# For Linux or Unix$streamlitrun./pickpod/app/Home.py--server.port8051$# For Windows$python-mstreamlitrun./pickpod/app/Home.py--server.port8051Then visithttp://127.0.0.1:8051in your local browser.Installation in a typical environmentWe chosenvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04as a typical system environment to try to installPickpod. The docker image has the following base configuration:$python3-VPython3.10.12


$nvidia-smiTueAug1508:06:562023+-----------------------------------------------------------------------------+NVIDIA-SMI525.105.17DriverVersion:525.105.17CUDAVersion:12.0||-------------------------------+----------------------+----------------------+GPUNamePersistence-M|Bus-IdDisp.A|VolatileUncorr.ECC|FanTempPerfPwr:Usage/Cap|Memory-Usage|GPU-UtilComputeM.|||MIGM.||===============================+======================+======================|0NVIDIAGeForce...On|00000000:65:00.0Off|N/A|0%43CP823W/370W|1481MiB/24576MiB|0%Default|||N/A|+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+Processes:|GPUGICIPIDTypeProcessnameGPUMemory|IDIDUsage||=============================================================================|+-----------------------------------------------------------------------------+First, we need to installffmpeg,python3-pip, and other essential tools, then upgrade the software packages.$sudoapt-get-yinstallcmakelibsndfile1ffmpegpython3-pip
$sudoaptupdate&&aptupgrade-yWe can verify ifffmpegis installed successfully in the following way:$ffmpeg-versionffmpegversion4.4.2-0ubuntu0.22.04.1Copyright(c)2000-2021theFFmpegdevelopersbuiltwithgcc11(Ubuntu11.2.0-19ubuntu1)configuration:--prefix=/usr--extra-version=0ubuntu0.22.04.1--toolchain=hardened--libdir=/usr/lib/x86_64-linux-gnu--incdir=/usr/include/x86_64-linux-gnu--arch=amd64--enable-gpl--disable-stripping--enable-gnutls--enable-ladspa--enable-libaom--enable-libass--enable-libbluray--enable-libbs2b--enable-libcaca--enable-libcdio--enable-libcodec2--enable-libdav1d--enable-libflite--enable-libfontconfig--enable-libfreetype--enable-libfribidi--enable-libgme--enable-libgsm--enable-libjack--enable-libmp3lame--enable-libmysofa--enable-libopenjpeg--enable-libopenmpt--enable-libopus--enable-libpulse--enable-librabbitmq--enable-librubberband--enable-libshine--enable-libsnappy--enable-libsoxr--enable-libspeex--enable-libsrt--enable-libssh--enable-libtheora--enable-libtwolame--enable-libvidstab--enable-libvorbis--enable-libvpx--enable-libwebp--enable-libx265--enable-libxml2--enable-libxvid--enable-libzimg--enable-libzmq--enable-libzvbi--enable-lv2--enable-omx--enable-openal--enable-opencl--enable-opengl--enable-sdl2--enable-pocketsphinx--enable-librsvg--enable-libmfx--enable-libdc1394--enable-libdrm--enable-libiec61883--enable-chromaprint--enable-frei0r--enable-libx264--enable-sharedlibavutil56.70.100/56.70.100libavcodec58.134.100/58.134.100libavformat58.76.100/58.76.100libavdevice58.13.100/58.13.100libavfilter7.110.100/7.110.100libswscale5.9.100/5.9.100libswresample3.9.100/3.9.100libpostproc55.9.100/55.9.100After downloading the source code and runningsetup.py, we can importPickpodinPython.$gitclonehttps://github.com/shixiangcap/pickpod.git
$pipinstall./pickpodUsageDo internetPickpodtaskfrompickpod.configimportTaskConfigfrompickpod.draftimportAudioDraftfrompickpod.taskimportPickpodTaskHUGGING_FACE_KEY="YOUR_HUGGING_FACE_KEY"# For example: https://www.youtube.com/watch?v=xxxxxxxxxxxaudio_url="YOUR_AUDIO_URL_ON_INTERNET"# Set audio informationaudio_draft=AudioDraft(audio_url=audio_url)# Config pickpod tasktask_config=TaskConfig(key_hugging_face=HUGGING_FACE_KEY,pipeline=True)# Initial pickpod taskpickpod_task=PickpodTask(audio_draft,task_config)# Start pickpod taskpickpod_task.pickpod_with_url()# Print the result of pickpod taskprint(pickpod_task.__dict__)Do localPickpodtaskfrompickpod.configimportTaskConfigfrompickpod.draftimportAudioDraftfrompickpod.taskimportPickpodTaskHUGGING_FACE_KEY="YOUR_HUGGING_FACE_KEY"# For example: xxxxxxxxxxx.m4aaudio_path="YOUR_LOCAL_FILE_PATH"# Set audio informationaudio_draft=AudioDraft(audio_path=audio_path)# Config pickpod tasktask_config=TaskConfig(key_hugging_face=HUGGING_FACE_KEY,pipeline=False)# Initial pickpod taskpickpod_task=PickpodTask(audio_draft,task_config)# Start pickpod taskpickpod_task.pickpod_with_local()# Save the result of pickpod taskpickpod_task.save_to_txt()ExamplesA complete transcription result of an audio fileIf the targetYouTubevideo isIntroducing GPT-4, thePickpodcan get theJSONfileafeb5810-25ee-426d-aa88-7b58484d4c6f.jsonIf the target小宇宙podcast isEP 35. ICML现场对话AI研究员符尧：亲历AI诸神之战，解读LLM前沿研究，Llama 2，AI Agents, thePickpodcan get theJSONfile93aa3140-300d-4af6-9d9c-2c41e9095821.jsonRelated Effortsyt-dlp- A youtube-dl fork with additional features and fixes.faster-whisper- Faster Whisper transcription with CTranslate2.pyannote-audio- Neural building blocks for speaker diarization: speech activity detection, speaker change detection, overlapped speech detection, speaker embedding.Maintainers@shixiangcapContributingFeel free to dive in!Open an issueor submit PRs.LicenseMIT© shixiangcap