# Segments Guides for building an episode from segments: recording, uploading, library inserts, editing, markers, and rendering the final episode. ## Recording segments You can record new audio directly in the browser and add it as a segment in the [episode editor](Episodes.md#episode-editor-overview). ### How to record 1. Open the **episode editor** and use **Record new section**. 2. When the recorder is ready, click **Record** and speak (or produce audio). Your browser will request microphone access if needed. 3. Click **Stop** when finished. 4. You can **play back** the recording, **try again** (discard and re-record), or **add it to the list** to keep it as a segment. The new segment is appended to the segment list. You can reorder it, trim it, or run other segment tools (remove silence, transcript, etc.) as needed. ### Tips - Use a quiet environment and a decent microphone for better quality. - After adding, use [Trim, split, and silence](#trim-split-and-silence) to remove long pauses or mistakes at the start/end. - If your instance has **group calls** (WebRTC) enabled, you can also record remote guests; see [Group calls](Group-calls.md). ### Troubleshooting - **No record button or permission denied** - Allow microphone access in the browser. HTTPS is usually required for microphone access (except localhost). - **Recording fails or is empty** - Check that the correct microphone is selected in the browser or OS, and that nothing else is exclusively using it. ### See also - [Uploading and library inserts](#uploading-and-library-inserts) - [Trim, split, and silence](#trim-split-and-silence) - [Episode editor overview](Episodes.md#episode-editor-overview) ## Uploading and library inserts Besides recording, you can add segments by **uploading** an audio file for this episode or by **inserting** a clip from your [library](Library.md) (intros, outros, bumpers). ### Uploading an audio file 1. In the **episode editor**, use **upload** / insert from file. 2. Choose an audio file from your device. Supported formats typically include common formats (e.g. MP3, WAV, M4A); see the app or main [README](../blob/main/README.md) for limits and formats. 3. The file is uploaded and added as a segment. You can then reorder, trim, split, or remove silence as with any segment. Uploaded episode audio counts against the **podcast owner's** storage limit. ### Inserting from the library 1. In the **episode editor**, use **Insert from library**. 2. A list of your **library** assets is shown. You can also upload new files to the library from this screen if the UI allows. 3. Click the clip you want to use. It's added as a segment in the current episode. Library assets are reusable across episodes; they're stored once in your library. See [Managing your library](Library.md#managing-your-library). ### See also - [Recording segments](#recording-segments) - [Trim, split, and silence](#trim-split-and-silence) - [Library](Library.md) - [Episode editor overview](Episodes.md#episode-editor-overview) ## Trim, split, and silence You can refine segments by trimming the start and end, splitting them, removing long silence, and applying noise suppression. ### Trimming - **Trim start/end** - Adjust the start and end points of a segment so only the desired portion is used in the final episode. The waveform view helps you set boundaries. - Use the segment's trim controls and drag handles to define the in/out points. Trim handles can reach the end of the audio; **right-click** the waveform to cycle between pan and trim modes. ### Splitting - **Split** - Split one segment into two at a chosen point. Useful to remove a middle section or to reorder part of the segment as a separate segment. - Place the playhead where you want the cut, then apply **Split**. ### Segment Split (markers) **Segment Split** cuts at a chosen time and adjusts later markers (chapters/soundbites) so they stay aligned after the cut. ### Remove silence - **Add Silence Trims** - Auto-detect long silence (e.g. 1s+) and add non-destructive trim ranges with a buffer. - **Server Remove Silence** - Server-side silence removal from the Functions tab (threshold may be fixed or configurable depending on the instance). ### Noise suppression - **Noise suppression** - If available, applies processing to reduce background noise. Use it when the segment has constant hum or hiss; avoid over-processing speech. After any of these steps, the segment list updates. You can continue to reorder segments and then build the final episode. See [Making the final episode](#making-the-final-episode). ### See also - [Recording segments](#recording-segments) - [Uploading and library inserts](#uploading-and-library-inserts) - [Chapters and soundbites](#chapters-and-soundbites) - [Making the final episode](#making-the-final-episode) - [Episode editor overview](Episodes.md#episode-editor-overview) ## Chapters and soundbites Markers on the segment or final waveform control chapters and soundbites in the rendered episode and public player. ### Marker types Each segment marker can be: - **None** - Visual marker only - **Chapter** - Becomes an episode chapter (title/color); shown in the editor, feed, and embed; `chapters.json` and RSS `` when chapters exist - **Soundbite** - Clip of 15–120 seconds; RSS emits `` when the episode has a public URL; listeners can play soundbites on the public episode page **Add Chapter / Soundbite** defaults to the playhead. Cancel prompts on unsaved chapter/soundbite edits. You can also edit soundbites on the final waveform and download a clip from the export UI. ### View Chapters / Soundbites The **Final Episode** box includes collapsible **Chapters** and **Soundbites** cards: add, edit, delete, seek/play, and (for soundbites) play with auto-advance. ## Segment audio EQ In the segment editor you can apply a **per-segment equalizer**. Use the **Audio** button (to the right of Zoom Out) to open the EQ panel. **Low**, **Mids**, and **High** sliders each range from -20 to +20 dB. You get a live Web Audio preview while adjusting. **Apply** stores the EQ for that segment until you **Save** the episode; **Cancel** reverts. The same EQ is applied when rendering the final episode (via ffmpeg). Playback in the segment list uses the saved EQ when present. ## Enabling and disabling segments Owners, admins, editors, and managers can **exclude** a segment from the final episode. On the episode details page, use the **Eye** button to the right of the segment editor (Scissors) button: click to disable the segment, click again to re-enable. Disabled segments appear as a black row with an EyeOff icon. They are omitted when you build the final episode. If **all** segments are disabled, **Build Final Episode** is disabled. ## Transcripts and LLM When your instance has **Whisper ASR** and optionally **LLM** helpers configured, you can generate transcripts for segments and ask an LLM for tips or feedback. ### Generating a transcript 1. In the **episode editor**, select or open a segment that has audio (recorded or uploaded). 2. Use **Generate Transcript** (shown when a transcript provider is configured). Otherwise you can **upload SRT**. 3. When the transcript is ready, you can **view** and edit it (SRT-style timings). Soft-delete in the transcript editor adds trim ranges; trimmed entries can be restored. Save persists trim ranges. Tap the pencil on a cue to fix wording (Enter to save, Escape to cancel). 4. Long self-hosted Whisper jobs use an extended HTTP timeout so they are less likely to fail while ASR is still running. For **multi-track** recordings (multiple host/guest takes), HarborFM can transcribe each person and merge them into one timeline. Manage Segment has a toggle to turn that off. In Track or Clip Settings, choose which lanes count toward multi-track transcription (**Include in transcript**). Cast **nicknames** (see [Podcasts: Cast](Podcasts.md#cast-hosts-and-guests)) label speakers when set. ### Episode transcript After segments have transcripts, use the Final Episode **Transcript** controls to stitch them into one **episode transcript** in order. **Regenerate Transcript** redoes that stitch without rebuilding the episode audio. Download **SRT** or **TXT** (plain spoken text, no timestamps) from the Episode Transcript dialog. In Advanced Editor, toggle **Captions** for one-line transcript lanes under each track. Transcripts are useful for accessibility, show notes, and for using the LLM helper. The public episode player can open a seekable cue list when a transcript is available. ### Asking an LLM about a segment If the instance has **LLM** integration (e.g. Ollama or OpenAI) configured: 1. Ensure the segment has a **transcript** (generate one as above). 2. Use the **Ask** tab about the segment (e.g. tips, summarise, suggest questions). Trimmed transcript text is excluded from LLM context. 3. Enter your question or choose a preset. The LLM responds based on the segment's transcript; the answer renders in a read-only field so copy selects only the answer. 4. Use the response for editing ideas, show notes, or follow-up questions. Exact prompts and models depend on instance configuration; see **Settings** (admin) for LLM options. ### See also - [Making the final episode](#making-the-final-episode) - [Episode editor overview](Episodes.md#episode-editor-overview) - Main [README](../blob/main/README.md) - Whisper and LLM env/config - [Admin: Global settings](Admin-and-settings.md#global-settings) - Whisper ASR and LLMs ## Project zip and DAW round-trip **Export Project** / **Export Segment** writes a zip with per-segment DAW sidecars, including `timeline.otio` for DaVinci Resolve and `segment.rpp` for Reaper. After you edit cuts and trims in Resolve, overwrite `timeline.otio` in the zip and use **Import Project** or **Import Segment**, or on Manage Segment use **Import OTIO** with only the `.otio` file (same idea as **Import Reaper** for `.rpp`). When the OTIO hash differs from export (or you use Import OTIO), HarborFM rebuilds `tracks_manifest.json` from clip timing and remakes the segment mix. Fairlight FX are not re-imported. If both OTIO and Reaper sidecars changed in a zip import, OTIO takes precedence. Details are in the README inside each project zip. ## Making the final episode When you've added and arranged all segments, **render** the episode into a single audio file with **Build Final Episode**. After a successful build, the control is labeled **Final Episode**. ### What happens 1. In the **episode editor**, open the Final Episode box and click **Build Final Episode**. 2. The server concatenates all enabled segments in order (using ffmpeg) and applies the instance's default output settings (e.g. mono/stereo, format). Output options are configured in **Settings > Final Episode Output**. 3. When the render finishes, the **final audio file** is associated with the episode. You can **download** it from the editor. Chapters and soundbites stay editable on the final waveform. 4. If you change segments or order later, build again to generate a new version. ### Output settings Mono vs stereo, bitrate, and other output options are set at the **instance** level in **Settings > Final Episode Output**. Change them there if you want future renders to use different defaults. ### After rendering - **Publish** - Use the publishing panel (Publish/Scheduled stay disabled until a final build exists). See [Publishing and status](Episodes.md#publishing-and-status). - **Podcast delivery** - If you've configured export (S3, FTP, etc.) on the show, deploy so the updated feed and audio (and chapters.json when present) are pushed to your remote. See [Export and delivery](Export-and-delivery.md). - **Archive / Backup** - With Archive Settings on the show, **Archive** uploads a project zip and frees local project files (feed audio stays). **Backup** / **Dated Backup** upload without deleting local files; you can restore a listed backup later. See [Episode archive and backup](Episode-archive-and-backup.md). - **Video** - When allowed, generate video from the final audio. See [Episodes: Video generation](Episodes.md#video-generation). - **Download** - Use the download option to get the file for manual upload to another platform. ### Rate limiting The server may rate-limit how often you can run a final build per user (e.g. once per minute). If the button is disabled or you see an error, wait a moment and try again. ### See also - [Episode editor overview](Episodes.md#episode-editor-overview) - [Publishing and status](Episodes.md#publishing-and-status) - [Export and delivery](Export-and-delivery.md) - [Episode archive and backup](Episode-archive-and-backup.md) - [Admin: Global settings](Admin-and-settings.md#global-settings) - Final Episode Output