Another node for Amateur Radio Newsline on demand

Greetings:

I have set up another node which provides Amateur Radio Newsline on demand. I know there are already a couple of those, plus the script provided by ASL for playing ARN on a node. HamVoIP has a version of this, too.

So, why am I reinventing the wheel?

One thing that has always bugged me about ARN's presentation is that there is no clear break between segments at which one could automate scheduled drops to avoid timing out repeaters, without breaking the flow of a story. It's really meant to be played as one 17 ish minute long episode without breaks, other than to identify your station.

For the last nearly six years, I have been broadcasting Amateur Radio Newsline on the Blind Hams Network, wherein it is broken up into logical segments rather than a fixed time interval. This way, it won't stop in the middle of stories, or sometimes right at the end of a story, with the next segment starting so close to the end that it might as well not bother.

All segments are no more than 2 minutes and 55 seconds long. If two stories won't fit into 2 minutes and 55 seconds, then they are broken up into their own segments. If a single story goes longer than 2 minutes and 55 seconds (rare, but it does occasionally happen), it is broken roughly in half, based on a good stopping point in the reading.

So, when you connect to the node, you get an announcement to stand by for amateur radio newsline, coming up in 15 seconds, followed by a 15 second pause, the first audio segment, an announcement, a break for 5 seconds, and it continues this way through the end, at which point,an outro announcement plays, then the node disconnects.

If you have a repeater that you can guarantee will never time out, I.E. you disable the timers with the appropriate cop command before playing, and you don't have a lot of nodes connected to you with their own timer, which you can't control, then using the built-in ASL3 script for playing Amateur Radio Newsline in one unbroken segment is probably the best way to handle things.

However, if you run a network with multiple nodes and repeaters, assuming the lowest common denominator is a 3 minute timeout, then you might find this a better experience than what the built-in script provides.

I'm doing it on a dedicated node, because what I'm doing isn't very portable. I can't just send out a script and achieve the same results on any node.

This node is powered by KC1FSZ's asl-parrot in program mode, thus it is not a conference. Each connected station gets it's own isolated run of the current episode from start to finish, then the node disconnects. If one node connects while another node is streaming an episode in progress, there will be no affect on the previous connected node. The nodes won't hear each other, nor will there be any conflict with the streaming audio.

If you connect using Ampersand-ASL, it supports 16 kHz audio. This may matter more in the future. For ASL3 and HamVoIP, normal ulaw at 8 kHz is preferred.

Because the editing process is done completely manually by me, the latest episode might not be live for a little bit after it is released. They usually come out late Thursday or early Friday, and I've been doing my best since November 2020 to upload the new version with my custom audio processing chain and edits ASAP. It only takes me about 5 minutes per episode, but it is still a manual process. I have yet to find something automated that works the way I like for editing the files the way I want them edited.

If you feel this format of Amateur Radio Newsline would be useful to you, then try it out for yourself by calling node 506316. Bruce has already fixed several bugs that I reported in the last few days, but if you run into any weird problems, please report them here. The node is currently running on a modest VPS, so I have no idea what it's theoretical limit is as far as how many nodes can stream at once. I've personally tried it with 10 simultaneous connections, and it was fine with that.

If this turns out to be useful to the community, I may add other nodes in a sequential block for other news bulletins. All I know about are Amateur Radio Newsline and ARRL News, but if you have any other suggestions, including non-English, suitable for air, please feel free to mention them.

Happy newsing!

Thanks for your work on this. Often there are better methods to satisfy the same itch. I'll just add that the 516229 ARRL NEWS and 516228 ARNewsline feeds have been splitting the segments for sometime now. ARRLNEWS is split automatically at segment breaks. ARNewsline is done manually at present, although I there may be AI methods doing this automatically in the future.

Good luck with your news feeds!
David, WD5M
arnewsline.rfnet.link
arrlnews.rfnet.link

Audacity can auto-split on those broadcaster pauses (sentences, paragraphs)

Audacity is scriptable, too

The problem is there are often no pauses at all between segments. In fact, quite frequently, there are longer pauses during the stories themselves than between them. I've been editing audio professionally for a couple of decades, so I'm well aware of what's out there, and the best thing I can come up with is something that leverages Whisper, or some other local model for transcription, plus something that can be scripted from cli on a schedule with some strict rules for detecting voices, comparing with the actual website transcript, etc. Definitely not a straight-forward process, and I don't currently trust anything to do it better than I can with Reaper, which is my DAW of choice. Never really did get on with Audacity.

there are at least pauses between words, sentences, and paragraphs. and there are pauses between segments and 'housekeeping' or 'admin' drops.

these settings seem to work pretty well after only a couple minutes of trial and error:

to go crazy with cutting block and half razor on a reel-to-reel machine would have taken lots longer to accomplish

if Audacity can do it, I'd bet ffmpeg can too.

maybe even a one-liner:

mp3splt -s -p th=-30,min=1.0 input.mp3

Where 'th' is the audio threshold, and 'min' is the minimum duration to trip.

K6CRS

This is not a problem that can be solved simply by looking at thresholds and lengths of silence. You can do that with ARRL news, though really, for that, it's even simpler since they always have fixed length sections, but certainly not ARN.

Each host has a slightly different style. In some cases, if you were to use basic threshold splitting, you would have multiple breaks in some stories, because a few readers pause naturally for long enough that it would trip, and some editors leave no room at all between stories. I actually had to add silence between the host and the reporter of the story in this current episode because it was so close together.

Unless the format changes, this needs to be done much more intelligently than a simple one-liner with ffmpeg, SoX, or anything like that, otherwise, ASL's built-in script could do all that, and I would feel no need to offer such a node.

I welcome anyone who can split it the way I do, with the same results, automatically, though. I think it could be done, but certainly not with very basic splitting techniques like that.

I’ve spent a lot of time automating the capture of ARN and ARRL. Right now my script captures, normalizes, splits (on the 438 Hz tones for ARN and the K for ARRL) and converts in one slightly over complicated bash file.

all I’m waiting on is to finish the extensions stanza to automate the playback so that ASL will drop IDs in on idle.

So there are literally a dozen ways to do it…

I want to split within three minute chunks, and also flow well, not just putting a split point at an arbitrary pause, so I need more granularity than just splitting at the tone. That sure would make things easier if that's all I had to do.

I am slightly compressing, equalizing, normalizing (but not peak to 0, and, depending on the host, some other manual tweaks. One reporter in particular has an extremely peaky microphone that bugs me, so he gets his very own EQ curve. Still only takes me about five minutes per episode, but is not fully automated.