Log in to subscribe to heads-up notifications for this feed or its category via email, Slack, or Discord.
Ask the AI anything about content, patterns, and edits for Tornevalls Blog. The AI will receive full version history including all edited articles. Open question history.
4896163eb964d9ae1c1cf87229d39be0219192dcWarning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
Warning! This is techy mumbo jumbo linux-howto-article!
To get a translation of this text, hide the swedish version and click on the english version.
Svensk Version
Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.
Det fungerar för det mesta. Problemet uppstår när det blir bråk.
I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.
Table of Contents Toggle Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables) Så hur gör man då?
Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.
Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.
Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.
Vad jag faktiskt har byggt
Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:
Full tillgång: allt är öppet
Avstängt: all trafik stoppas helt
Begränsat: internet är på, men utvalda tjänster blockeras
Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.
För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.
Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.
Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.
Hur ser det ut?
Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.
Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:
host Emily { hardware ethernet ; fixed-address 10.1.1.53; }
host SkolEmily { hardware ethernet ; fixed-address 10.1.1.51; }
host SkolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }
Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:
roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com
Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).
Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.
Resolvern arbetar i tre steg:
Slår upp en eller flera IPv4-adresser för varje domän
Kör whois på varje IP-adress
Plockar ut hela CIDR-rangen från registry-datat
En förenklad version av scriptet ser ut så här:
#!/bin/bash set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' ' ' | sort -u > "$tmp"
mv "$tmp" "$OUT"
Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:
128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12
Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.
Varje person har en state-fil:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.
När man kör strict kopieras iplist.resolved in i personens state-fil.
Scriptet kan slå av/på per person eller per enhet:
nethandle
nethandle emily off
nethandle emily on strict
nethandle emily-antilopen on strict
nethandle emily on
En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:
en kedja per person, t.ex. NH_EMILY
en JUMP-regel i FORWARD per intern IP som ska styras
DROP-regler i kedjan för varje CIDR i state-filen
Förenklat ser det ut så här:
Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...
Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.
English version The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.
This works most of the time. The problem arises when arguments happen.
In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.
So how do you deal with it?
The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.
The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.
That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.
What I have actually built
I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:
Full access: everything is open
Off: all traffic is completely blocked
Limited: the internet is on, but selected services are blocked
The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.
To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.
The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.
This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.
What does it look like?
Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.
Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:
host Emily { hardware ethernet ; fixed-address 10.1.1.53; }
host SchoolEmily { hardware ethernet ; fixed-address 10.1.1.51; }
host SchoolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }
The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:
roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com
The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).
This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.
The resolver works in three steps:
Looks up one or more IPv4 addresses for each domain
Runs whois on each IP address
Extracts the full CIDR range from the registry data
A simplified version of the script looks like this:
#!/bin/bash set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"
mv "$tmp" "$OUT"
The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:
128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12
This is the list that is copied into a person’s state file when strict is activated.
Each person has a state file:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
An empty file means full access. Thomas = test state. You should not block yourself.
When strict is used, iplist.resolved is copied into the person’s state file.
The script can turn access on or off per person or per device:
nethandle
nethandle emily off
nethandle emily on strict
nethandle emily-antilopen on strict
nethandle emily on
A separate apply component runs after every change and at boot. It reads the state files and creates:
one chain per person, for example NH_EMILY
a JUMP rule in FORWARD per internal IP that should be controlled
DROP rules in the chain for each CIDR in the state file
Simplified, it looks like this:
Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...
The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.
8f20e4a085f7a1980f371bb88d4b935d7346ba62
4896163eb964d9ae1c1cf87229d39be0219192dc
TITLE:
My kids lie about the internet when they argue
DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!
To get a translation of this text, hide the swedish version and click on the english version.
Svensk Version
Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.
Det fungerar för det mesta. Problemet uppstår när det blir bråk.
I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.
Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?
Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.
Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.
Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.
Vad jag faktiskt har byggt
Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:
Full tillgång: allt är öppet
Avstängt: all trafik stoppas helt
Begränsat: internet är på, men utvalda tjänster blockeras
Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.
För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.
Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.
Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.
Hur ser det ut?
Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.
1. Fasta IP per enhet (DHCP)
Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SkolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SkolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. En konfigurationsfil med domäner som ska kunna blockas
Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver som gör om domäner till CIDR-ranges
Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).
Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.
Resolvern arbetar i tre steg:
Slår upp en eller flera IPv4-adresser för varje domän
Kör whois på varje IP-adress
Plockar ut hela CIDR-rangen från registry-datat
En förenklad version av scriptet ser ut så här:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"
mv "$tmp" "$OUT"
Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.
4. State per person
Varje person har en state-fil:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.
När man kör strict kopieras iplist.resolved in i personens state-fil.
5. Styrning med ett kommando
Scriptet kan slå av/på per person eller per enhet:
# Status
nethandle
# Stäng allt internet för Emily
nethandle emily off
# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict
# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict
# Full tillgång igen (tömmer state)
nethandle emily on
6. Apply-fasen (iptables)
En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:
en kedja per person, t.ex. NH_EMILY
en JUMP-regel i FORWARD per intern IP som ska styras
DROP-regler i kedjan för varje CIDR i state-filen
Förenklat ser det ut så här:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.
English version
The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.
This works most of the time. The problem arises when arguments happen.
In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.
So how do you deal with it?
The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.
The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.
That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.
What I have actually built
I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:
Full access: everything is open
Off: all traffic is completely blocked
Limited: the internet is on, but selected services are blocked
The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.
To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.
The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.
This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.
What does it look like?
Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.
1. Fixed IPs per device (DHCP)
Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SchoolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SchoolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. A configuration file with domains that can be blocked
The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver that turns domains into CIDR ranges
The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).
This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.
The resolver works in three steps:
Looks up one or more IPv4 addresses for each domain
Runs whois on each IP address
Extracts the full CIDR range from the registry data
A simplified version of the script looks like this:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"
mv "$tmp" "$OUT"
The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
This is the list that is copied into a person's state file when strict is activated.
4. State per person
Each person has a state file:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
An empty file means full access. Thomas = test state. You should not block yourself.
When strict is used, iplist.resolved is copied into the person's state file.
5. Control with a single command
The script can turn access on or off per person or per device:
# Status
nethandle
# Shut down all internet for Emily
nethandle emily off
# Allow internet but block selected services (CIDR list)
nethandle emily on strict
# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict
# Full access again (clears state)
nethandle emily on
6. Apply phase (iptables)
A separate apply component runs after every change and at boot. It reads the state files and creates:
one chain per person, for example NH_EMILY
a JUMP rule in FORWARD per internal IP that should be controlled
DROP rules in the chain for each CIDR in the state file
Simplified, it looks like this:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.
TITLE:
My kids lie about the internet when they argue
DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!
To get a translation of this text, hide the swedish version and click on the english version.
Svensk Version
Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.
Det fungerar för det mesta. Problemet uppstår när det blir bråk.
I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.
Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?
Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.
Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.
Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.
Vad jag faktiskt har byggt
Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:
Full tillgång: allt är öppet
Avstängt: all trafik stoppas helt
Begränsat: internet är på, men utvalda tjänster blockeras
Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.
För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.
Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.
Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.
Hur ser det ut?
Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.
1. Fasta IP per enhet (DHCP)
Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SkolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SkolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. En konfigurationsfil med domäner som ska kunna blockas
Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver som gör om domäner till CIDR-ranges
Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).
Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.
Resolvern arbetar i tre steg:
Slår upp en eller flera IPv4-adresser för varje domän
Kör whois på varje IP-adress
Plockar ut hela CIDR-rangen från registry-datat
En förenklad version av scriptet ser ut så här:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"
mv "$tmp" "$OUT"
Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.
4. State per person
Varje person har en state-fil:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.
När man kör strict kopieras iplist.resolved in i personens state-fil.
5. Styrning med ett kommando
Scriptet kan slå av/på per person eller per enhet:
# Status
nethandle
# Stäng allt internet för Emily
nethandle emily off
# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict
# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict
# Full tillgång igen (tömmer state)
nethandle emily on
6. Apply-fasen (iptables)
En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:
en kedja per person, t.ex. NH_EMILY
en JUMP-regel i FORWARD per intern IP som ska styras
DROP-regler i kedjan för varje CIDR i state-filen
Förenklat ser det ut så här:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.
English version
The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.
This works most of the time. The problem arises when arguments happen.
In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.
So how do you deal with it?
The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.
The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.
That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.
What I have actually built
I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:
Full access: everything is open
Off: all traffic is completely blocked
Limited: the internet is on, but selected services are blocked
The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.
To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.
The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.
This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.
What does it look like?
Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.
1. Fixed IPs per device (DHCP)
Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SchoolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SchoolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. A configuration file with domains that can be blocked
The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver that turns domains into CIDR ranges
The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).
This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.
The resolver works in three steps:
Looks up one or more IPv4 addresses for each domain
Runs whois on each IP address
Extracts the full CIDR range from the registry data
A simplified version of the script looks like this:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"
mv "$tmp" "$OUT"
The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
This is the list that is copied into a person’s state file when strict is activated.
4. State per person
Each person has a state file:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
An empty file means full access. Thomas = test state. You should not block yourself.
When strict is used, iplist.resolved is copied into the person’s state file.
5. Control with a single command
The script can turn access on or off per person or per device:
# Status
nethandle
# Shut down all internet for Emily
nethandle emily off
# Allow internet but block selected services (CIDR list)
nethandle emily on strict
# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict
# Full access again (clears state)
nethandle emily on
6. Apply phase (iptables)
A separate apply component runs after every change and at boot. It reads the state files and creates:
one chain per person, for example NH_EMILY
a JUMP rule in FORWARD per internal IP that should be controlled
DROP rules in the chain for each CIDR in the state file
Simplified, it looks like this:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.
4896163eb964d9ae1c1cf87229d39be0219192dc
8f20e4a085f7a1980f371bb88d4b935d7346ba62
8f20e4a085f7a1980f371bb88d4b935d7346ba62Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
Warning! This is techy mumbo jumbo linux-howto-article!
To get a translation of this text, hide the swedish version and click on the english version.
Svensk Version
Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.
Det fungerar för det mesta. Problemet uppstår när det blir bråk.
I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.
Table of Contents Toggle Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables) Så hur gör man då?
Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.
Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.
Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.
Vad jag faktiskt har byggt
Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:
Full tillgång: allt är öppet
Avstängt: all trafik stoppas helt
Begränsat: internet är på, men utvalda tjänster blockeras
Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.
För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.
Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.
Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.
Hur ser det ut?
Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.
Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:
host Emily { hardware ethernet ; fixed-address 10.1.1.53; }
host SkolEmily { hardware ethernet ; fixed-address 10.1.1.51; }
host SkolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }
Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:
roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com
Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).
Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.
Resolvern arbetar i tre steg:
Slår upp en eller flera IPv4-adresser för varje domän
Kör whois på varje IP-adress
Plockar ut hela CIDR-rangen från registry-datat
En förenklad version av scriptet ser ut så här:
#!/bin/bash set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' ' ' | sort -u > "$tmp"
mv "$tmp" "$OUT"
Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:
128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12
Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.
Varje person har en state-fil:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.
När man kör strict kopieras iplist.resolved in i personens state-fil.
Scriptet kan slå av/på per person eller per enhet:
nethandle
nethandle emily off
nethandle emily on strict
nethandle emily-antilopen on strict
nethandle emily on
En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:
en kedja per person, t.ex. NH_EMILY
en JUMP-regel i FORWARD per intern IP som ska styras
DROP-regler i kedjan för varje CIDR i state-filen
Förenklat ser det ut så här:
Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...
Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.
English version The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.
This works most of the time. The problem arises when arguments happen.
In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.
So how do you deal with it?
The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.
The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.
That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.
What I have actually built
I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:
Full access: everything is open
Off: all traffic is completely blocked
Limited: the internet is on, but selected services are blocked
The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.
To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.
The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.
This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.
What does it look like?
Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.
Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:
host Emily { hardware ethernet ; fixed-address 10.1.1.53; }
host SchoolEmily { hardware ethernet ; fixed-address 10.1.1.51; }
host SchoolEmily2 { hardware ethernet ; fixed-address 10.1.1.52; }
The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:
roblox.com www.roblox.com youtube.com www.youtube.com steamcommunity.com store.steampowered.com
The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).
This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.
The resolver works in three steps:
Looks up one or more IPv4 addresses for each domain
Runs whois on each IP address
Extracts the full CIDR range from the registry data
A simplified version of the script looks like this:
#!/bin/bash set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf" OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do [ -z "$host" ] && continue [[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do whois "$ip" | awk '/^CIDR:/ {print $2}' done done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"
mv "$tmp" "$OUT"
The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:
128.116.0.0/17 142.250.0.0/15 172.217.0.0/16 216.58.192.0/19 23.0.0.0/12
This is the list that is copied into a person's state file when strict is activated.
Each person has a state file:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
An empty file means full access. Thomas = test state. You should not block yourself.
When strict is used, iplist.resolved is copied into the person's state file.
The script can turn access on or off per person or per device:
nethandle
nethandle emily off
nethandle emily on strict
nethandle emily-antilopen on strict
nethandle emily on
A separate apply component runs after every change and at boot. It reads the state files and creates:
one chain per person, for example NH_EMILY
a JUMP rule in FORWARD per internal IP that should be controlled
DROP rules in the chain for each CIDR in the state file
Simplified, it looks like this:
Chain FORWARD NH_EMILY all -- 10.1.1.23 0.0.0.0/0 NH_EMILY all -- 10.1.1.52 0.0.0.0/0 NH_EMILY all -- 10.1.1.51 0.0.0.0/0 NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY DROP all -- 0.0.0.0/0 128.116.0.0/17 DROP all -- 0.0.0.0/0 142.250.0.0/15 ...
The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.
8f20e4a085f7a1980f371bb88d4b935d7346ba62
4896163eb964d9ae1c1cf87229d39be0219192dc
TITLE:
My kids lie about the internet when they argue
DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!
To get a translation of this text, hide the swedish version and click on the english version.
Svensk Version
Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.
Det fungerar för det mesta. Problemet uppstår när det blir bråk.
I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.
Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?
Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.
Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.
Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.
Vad jag faktiskt har byggt
Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:
Full tillgång: allt är öppet
Avstängt: all trafik stoppas helt
Begränsat: internet är på, men utvalda tjänster blockeras
Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.
För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.
Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.
Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.
Hur ser det ut?
Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.
1. Fasta IP per enhet (DHCP)
Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SkolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SkolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. En konfigurationsfil med domäner som ska kunna blockas
Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver som gör om domäner till CIDR-ranges
Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).
Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.
Resolvern arbetar i tre steg:
Slår upp en eller flera IPv4-adresser för varje domän
Kör whois på varje IP-adress
Plockar ut hela CIDR-rangen från registry-datat
En förenklad version av scriptet ser ut så här:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"
mv "$tmp" "$OUT"
Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.
4. State per person
Varje person har en state-fil:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.
När man kör strict kopieras iplist.resolved in i personens state-fil.
5. Styrning med ett kommando
Scriptet kan slå av/på per person eller per enhet:
# Status
nethandle
# Stäng allt internet för Emily
nethandle emily off
# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict
# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict
# Full tillgång igen (tömmer state)
nethandle emily on
6. Apply-fasen (iptables)
En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:
en kedja per person, t.ex. NH_EMILY
en JUMP-regel i FORWARD per intern IP som ska styras
DROP-regler i kedjan för varje CIDR i state-filen
Förenklat ser det ut så här:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.
English version
The only thing that really seems to matter in my children's lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.
This works most of the time. The problem arises when arguments happen.
In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.
So how do you deal with it?
The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.
The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.
That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.
What I have actually built
I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:
Full access: everything is open
Off: all traffic is completely blocked
Limited: the internet is on, but selected services are blocked
The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.
To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.
The result is that arguments like "I need the internet for school" no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.
This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.
What does it look like?
Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.
1. Fixed IPs per device (DHCP)
Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SchoolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SchoolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. A configuration file with domains that can be blocked
The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver that turns domains into CIDR ranges
The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).
This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.
The resolver works in three steps:
Looks up one or more IPv4 addresses for each domain
Runs whois on each IP address
Extracts the full CIDR range from the registry data
A simplified version of the script looks like this:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"
mv "$tmp" "$OUT"
The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
This is the list that is copied into a person's state file when strict is activated.
4. State per person
Each person has a state file:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
An empty file means full access. Thomas = test state. You should not block yourself.
When strict is used, iplist.resolved is copied into the person's state file.
5. Control with a single command
The script can turn access on or off per person or per device:
# Status
nethandle
# Shut down all internet for Emily
nethandle emily off
# Allow internet but block selected services (CIDR list)
nethandle emily on strict
# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict
# Full access again (clears state)
nethandle emily on
6. Apply phase (iptables)
A separate apply component runs after every change and at boot. It reads the state files and creates:
one chain per person, for example NH_EMILY
a JUMP rule in FORWARD per internal IP that should be controlled
DROP rules in the chain for each CIDR in the state file
Simplified, it looks like this:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
The point is that the blocks become "per person" because only those specific internal IP addresses jump into the chain.
TITLE:
My kids lie about the internet when they argue
DESCRIPTION:
Warning! This is techy mumbo jumbo linux-howto-article! To get a translation of this text, hide the swedish version and click on the english version.
CONTENT:
Warning! This is techy mumbo jumbo linux-howto-article!
To get a translation of this text, hide the swedish version and click on the english version.
Svensk Version
Det enda som verkligen tycks betyda något i barnens liv, bortsett från de gånger de faktiskt uppskattar att träffa vänner och gå ut, är internet. Därför har jag under lång tid använt internet som ett tydligt styrmedel: sköter man sina åtaganden är internet öppet. Sköter man inget alls är internet helt stängt.
Det fungerar för det mesta. Problemet uppstår när det blir bråk.
I de lägena dyker det ofta upp påståenden om att internet absolut behövs för skolarbete. Det är inte särskilt troligt mitt under ett lov, men det händer faktiskt att skolarbeten måste göras även då. Ibland handlar det inte ens om skola, utan om något så basalt som att någon behöver kunna somna med ljud i hörlurarna.
Table of Contents
Toggle
Så hur gör man då?Vad jag faktiskt har byggtHur ser det ut?1. Fasta IP per enhet (DHCP)2. En konfigurationsfil med domäner som ska kunna blockas3. Resolver som gör om domäner till CIDR-ranges4. State per person5. Styrning med ett kommando6. Apply-fasen (iptables)So how do you deal with it?What I have actually builtWhat does it look like?1. Fixed IPs per device (DHCP)2. A configuration file with domains that can be blocked3. Resolver that turns domains into CIDR ranges4. State per person5. Control with a single command6. Apply phase (iptables)
Så hur gör man då?
Den enkla lösningen är inte att antingen stänga allt eller släppa allt. Lösningen är att begränsa internet på personnivå.
Problemet är att de flesta färdiga brandväggslösningar och föräldrakontroller som klarar detta på riktigt ofta är dyra, inlåsta eller alldeles för grova. DNS-baserade lösningar räcker inte heller i ett hushåll där flera personer delar samma uppkoppling. Då måste man kunna begränsa per individ, inte per nätverk.
Det var här behovet uppstod på riktigt. Inte minst eftersom Emily aktivt försökte hitta kryphål till internet.
Vad jag faktiskt har byggt
Jag har byggt ett system där varje person i hushållet behandlas individuellt på nätverksnivå. Varje enhet har ett fast internt IP och knyts till en person. Utifrån det kan internet styras i tre tydliga lägen:
Full tillgång: allt är öppet
Avstängt: all trafik stoppas helt
Begränsat: internet är på, men utvalda tjänster blockeras
Den begränsade nivån är den intressanta. I stället för att försöka filtrera innehåll via DNS eller appar används brandväggsregler som blockerar hela nätblock (CIDR-ranges) för specifika tjänster som spelplattformar och streaming. Det gör det betydligt svårare att kringgå, eftersom det inte räcker att byta DNS, app eller domän.
För att detta ska vara hanterbart i praktiken har jag byggt ett eget styrscript. Med ett enda kommando kan jag slå på, stänga av eller begränsa internet för en specifik person eller till och med en specifik enhet. Status går alltid att se, och systemet överlever både omstarter och nätverksändringar.
Resultatet är att argumenten om “jag behöver internet till skolan” inte längre automatiskt innebär fritt spelrum. Internet kan vara öppet där det faktiskt behövs, samtidigt som det som orsakar konflikterna hålls borta.
Det här är ingen kommersiell produkt och inget universallösning. Det är ett tekniskt svar på ett väldigt vardagligt problem i ett hushåll där internet blivit en central del av allt.
Hur ser det ut?
Här är en förenklad bild av hur det fungerar i praktiken. Inget är magiskt: allt bygger på fasta interna IP per enhet, en liten state-fil per person och en apply-slinga som lägger iptables-regler.
1. Fasta IP per enhet (DHCP)
Varje relevant enhet får en fast adress i DHCP (MAC -> fixed-address). Exempel:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SkolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SkolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. En konfigurationsfil med domäner som ska kunna blockas
Filen /var/tornevall/system/etc/resolver/iplist.conf innehåller bara hostnames/domäner, en per rad:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver som gör om domäner till CIDR-ranges
Resolvern är ett separat hjälpscript som heter resolvecidr. Dess enda uppgift är att ta en lista med domäner och översätta dem till hela nätblock (CIDR-ranges).
Detta är nödvändigt eftersom stora tjänster använder många IP-adresser för redundans och lastbalansering. Att blockera en enskild IP-adress är i praktiken meningslöst; man måste blockera hela det nät som tjänsten är tilldelad.
Resolvern arbetar i tre steg:
Slår upp en eller flera IPv4-adresser för varje domän
Kör whois på varje IP-adress
Plockar ut hela CIDR-rangen från registry-datat
En förenklad version av scriptet ser ut så här:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '
' | sort -u > "$tmp"
mv "$tmp" "$OUT"
Resultatet skrivs till /var/tornevall/system/etc/resolver/iplist.resolved och innehåller enbart CIDR-ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
Det är den här listan som kopieras in i personens state-fil när man aktiverar strict.
4. State per person
Varje person har en state-fil:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
Tom fil = full tillgång. Thomas = Test-state. Man bör inte blocka sig själv dock.
När man kör strict kopieras iplist.resolved in i personens state-fil.
5. Styrning med ett kommando
Scriptet kan slå av/på per person eller per enhet:
# Status
nethandle
# Stäng allt internet för Emily
nethandle emily off
# Släpp på internet men blocka valda tjänster (CIDR-listan)
nethandle emily on strict
# Bara en enhet (Antilopen) får strict, övriga kan få andra lägen
nethandle emily-antilopen on strict
# Full tillgång igen (tömmer state)
nethandle emily on
6. Apply-fasen (iptables)
En separat apply-komponent körs efter varje ändring och vid boot. Den läser state-filerna och skapar:
en kedja per person, t.ex. NH_EMILY
en JUMP-regel i FORWARD per intern IP som ska styras
DROP-regler i kedjan för varje CIDR i state-filen
Förenklat ser det ut så här:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
Poängen är att blocken blir “per person” eftersom bara just de interna IP-adresserna hoppar in i kedjan.
English version
The only thing that really seems to matter in my children’s lives, apart from the times when they actually appreciate meeting friends and going out, is the internet. Because of that, for a long time I have used internet access as a clear tool for control: if you take care of your responsibilities, the internet is open. If you take care of nothing at all, the internet is completely shut off.
This works most of the time. The problem arises when arguments happen.
In those situations, claims often appear that the internet is absolutely necessary for schoolwork. That is not particularly likely in the middle of a school break, but it does in fact happen that school assignments need to be done even then. Sometimes it is not even about school, but about something as basic as someone needing to be able to fall asleep with audio in their headphones.
So how do you deal with it?
The simple solution is not to either shut everything down or let everything through. The solution is to limit internet access on a per-person basis.
The problem is that most off-the-shelf firewall solutions and parental control systems that can actually do this properly are often expensive, locked down, or far too coarse. DNS-based solutions are not sufficient either in a household where several people share the same connection. In that case, you need to be able to limit per individual, not per network.
That was where the need truly emerged. Not least because Emily actively tried to find loopholes to get internet access.
What I have actually built
I have built a system where each person in the household is handled individually at the network level. Each device has a fixed internal IP address and is tied to a person. Based on that, internet access can be controlled in three clear modes:
Full access: everything is open
Off: all traffic is completely blocked
Limited: the internet is on, but selected services are blocked
The limited mode is the interesting one. Instead of trying to filter content via DNS or apps, firewall rules are used to block entire network blocks (CIDR ranges) for specific services such as gaming platforms and streaming. This makes it significantly harder to circumvent, because it is not enough to change DNS, an app, or a domain.
To make this manageable in practice, I have built my own control script. With a single command, I can turn internet access on, off, or limit it for a specific person or even a specific device. Status is always visible, and the system survives both reboots and network changes.
The result is that arguments like “I need the internet for school” no longer automatically mean free rein. The internet can be open where it is actually needed, while what causes the conflicts is kept out.
This is not a commercial product and not a universal solution. It is a technical response to a very everyday problem in a household where the internet has become a central part of everything.
What does it look like?
Here is a simplified picture of how it works in practice. Nothing is magical: everything is based on fixed internal IPs per device, a small state file per person, and an apply loop that installs iptables rules.
1. Fixed IPs per device (DHCP)
Each relevant device gets a fixed address in DHCP (MAC -> fixed-address). Example:
host Emily {
hardware ethernet <mac>;
fixed-address 10.1.1.53;
}
host SchoolEmily {
hardware ethernet <mac>;
fixed-address 10.1.1.51;
}
host SchoolEmily2 {
hardware ethernet <mac>;
fixed-address 10.1.1.52;
}
2. A configuration file with domains that can be blocked
The file /var/tornevall/system/etc/resolver/iplist.conf contains only hostnames/domains, one per line:
roblox.com
www.roblox.com
youtube.com
www.youtube.com
steamcommunity.com
store.steampowered.com
3. Resolver that turns domains into CIDR ranges
The resolver is a separate helper script called resolvecidr. Its sole purpose is to take a list of domains and translate them into entire network blocks (CIDR ranges).
This is necessary because large services use many IP addresses for redundancy and load balancing. Blocking a single IP address is practically meaningless; you have to block the entire network that the service is assigned.
The resolver works in three steps:
Looks up one or more IPv4 addresses for each domain
Runs whois on each IP address
Extracts the full CIDR range from the registry data
A simplified version of the script looks like this:
#!/bin/bash
set -e
CONF="/var/tornevall/system/etc/resolver/iplist.conf"
OUT="/var/tornevall/system/etc/resolver/iplist.resolved"
tmp=$(mktemp)
while read -r host; do
[ -z "$host" ] && continue
[[ "$host" =~ ^# ]] && continue
for ip in $(getent ahostsv4 "$host" | awk '{print $1}'); do
whois "$ip" | awk '/^CIDR:/ {print $2}'
done
done < "$CONF" | tr ',' '\n' | sort -u > "$tmp"
mv "$tmp" "$OUT"
The result is written to /var/tornevall/system/etc/resolver/iplist.resolved and contains only CIDR ranges:
128.116.0.0/17
142.250.0.0/15
172.217.0.0/16
216.58.192.0/19
23.0.0.0/12
This is the list that is copied into a person’s state file when strict is activated.
4. State per person
Each person has a state file:
/var/tornevall/system/etc/resolver/state-emily
/var/tornevall/system/etc/resolver/state-max
/var/tornevall/system/etc/resolver/state-thomas
An empty file means full access. Thomas = test state. You should not block yourself.
When strict is used, iplist.resolved is copied into the person’s state file.
5. Control with a single command
The script can turn access on or off per person or per device:
# Status
nethandle
# Shut down all internet for Emily
nethandle emily off
# Allow internet but block selected services (CIDR list)
nethandle emily on strict
# Only one device (Antilopen) gets strict, others can have different modes
nethandle emily-antilopen on strict
# Full access again (clears state)
nethandle emily on
6. Apply phase (iptables)
A separate apply component runs after every change and at boot. It reads the state files and creates:
one chain per person, for example NH_EMILY
a JUMP rule in FORWARD per internal IP that should be controlled
DROP rules in the chain for each CIDR in the state file
Simplified, it looks like this:
Chain FORWARD
NH_EMILY all -- 10.1.1.23 0.0.0.0/0
NH_EMILY all -- 10.1.1.52 0.0.0.0/0
NH_EMILY all -- 10.1.1.51 0.0.0.0/0
NH_EMILY all -- 10.1.1.53 0.0.0.0/0
Chain NH_EMILY
DROP all -- 0.0.0.0/0 128.116.0.0/17
DROP all -- 0.0.0.0/0 142.250.0.0/15
...
The point is that the blocks become “per person” because only those specific internal IP addresses jump into the chain.
4896163eb964d9ae1c1cf87229d39be0219192dc
8f20e4a085f7a1980f371bb88d4b935d7346ba62
2f7e4a0d8c75dd7792918888f337748908ecb6f5Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […]
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.
That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.
I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.
Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening
The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.
At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.
Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.
Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.
Why the “Suno will die” narrative keeps showing up
This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.
First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.
Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.
Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.
The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.
Latest claims I have seen in that thread
Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”
What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.
What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.
So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.
Claim: “A settlement will force a ‘clean model’ and kill creativity”
What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.
What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.
Claim: “You don’t own anything, you are renting, and your catalog can vanish”
This is the part where people accidentally become correct, but for the wrong reasons.
Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.
Contract reality matters: the ToS is designed to give the platform broad rights and broad control.
The practical takeaway is simple and non-dramatic:
Back up your WAVs/stems and project notes locally. Always.
Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”
Possible: yes, as a policy choice.
Inevitable: no.
Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.
So what are the real risks for Suno?
Think in terms of business incentives.
High probability changes
When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.
Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.
Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.
Medium probability changes
It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.
In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.
Lower probability, but still worth planning for
There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.
A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.
What about us who actually do the work?
Here is the split that regulation will make clearer over time.
If you actually create something
If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.
At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.
If you do nothing and just press generate
This is where it all goes to shit, and yes, this is exactly where regulation is needed.
When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.
So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.
What you should do right now
This does not require panic. It does require using your head.
Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.
That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.
Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.
So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
2f7e4a0d8c75dd7792918888f337748908ecb6f5
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
696e004598696c9b32ec7879894bc14619881ea9
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
e7e71a61897ed20875ea43e501419311b91b35b1
696e004598696c9b32ec7879894bc14619881ea9
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
2f7e4a0d8c75dd7792918888f337748908ecb6f5
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
696e004598696c9b32ec7879894bc14619881ea9
e7e71a61897ed20875ea43e501419311b91b35b1
ebc4881ceeb7fba08d75edb6c73fd894dce57b22Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […]
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.
That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.
I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.
Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening
The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.
At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.
Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.
Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.
Why the “Suno will die” narrative keeps showing up
This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.
First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.
Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.
Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.
The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.
Latest claims I have seen in that thread
Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”
What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.
What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.
So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.
Claim: “A settlement will force a ‘clean model’ and kill creativity”
What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.
What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.
Claim: “You don’t own anything, you are renting, and your catalog can vanish”
This is the part where people accidentally become correct, but for the wrong reasons.
Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.
Contract reality matters: the ToS is designed to give the platform broad rights and broad control.
The practical takeaway is simple and non-dramatic:
Back up your WAVs/stems and project notes locally. Always.
Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”
Possible: yes, as a policy choice.
Inevitable: no.
Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.
So what are the real risks for Suno?
Think in terms of business incentives.
High probability changes
When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.
Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.
Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.
Medium probability changes
It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.
In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.
Lower probability, but still worth planning for
There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.
A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.
What about us who actually do the work?
Here is the split that regulation will make clearer over time.
If you actually create something
If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.
At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.
If you do nothing and just press generate
This is where it all goes to shit, and yes, this is exactly where regulation is needed.
When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.
So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.
What you should do right now
This does not require panic. It does require using your head.
Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.
That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.
Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.
So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
2f7e4a0d8c75dd7792918888f337748908ecb6f5
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
696e004598696c9b32ec7879894bc14619881ea9
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
e7e71a61897ed20875ea43e501419311b91b35b1
696e004598696c9b32ec7879894bc14619881ea9
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
2f7e4a0d8c75dd7792918888f337748908ecb6f5
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
696e004598696c9b32ec7879894bc14619881ea9
e7e71a61897ed20875ea43e501419311b91b35b1
696e004598696c9b32ec7879894bc14619881ea9Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.
That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.
I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.
Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening
The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.
At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.
Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.
Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.
Why the “Suno will die” narrative keeps showing up
This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.
First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.
Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage.
Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.
The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.
Latest claims I have seen in that thread
Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”
What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.
What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.
So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.
Claim: “A settlement will force a ‘clean model’ and kill creativity”
What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.
What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.
Claim: “You don’t own anything, you are renting, and your catalog can vanish”
This is the part where people accidentally become correct, but for the wrong reasons.
Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.
Contract reality matters: the ToS is designed to give the platform broad rights and broad control.
The practical takeaway is simple and non-dramatic:
Back up your WAVs/stems and project notes locally. Always.
Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”
Possible: yes, as a policy choice.
Inevitable: no.
Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.
So what are the real risks for Suno?
Think in terms of business incentives.
High probability changes
When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.
Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.
Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.
Medium probability changes
It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.
In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.
Lower probability, but still worth planning for
There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.
A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.
What about us who actually do the work?
Here is the split that regulation will make clearer over time.
If you actually create something
If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.
At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.
If you do nothing and just press generate
This is where it all goes to shit, and yes, this is exactly where regulation is needed.
When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.
So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.
What you should do right now
This does not require panic. It does require using your head.
Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.
That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.
Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.
So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
2f7e4a0d8c75dd7792918888f337748908ecb6f5
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
696e004598696c9b32ec7879894bc14619881ea9
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
e7e71a61897ed20875ea43e501419311b91b35b1
696e004598696c9b32ec7879894bc14619881ea9
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
2f7e4a0d8c75dd7792918888f337748908ecb6f5
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
696e004598696c9b32ec7879894bc14619881ea9
e7e71a61897ed20875ea43e501419311b91b35b1
e7e71a61897ed20875ea43e501419311b91b35b1Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main...
Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”.
That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”.
I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”.
Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening
The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs.
At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026.
Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled.
Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away.
Why the “Suno will die” narrative keeps showing up
This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story.
First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy.
Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage.
Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering.
The first two elements are grounded in reality. The third is usually narrative-building rather than evidence.
Latest claims I have seen in that thread
Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”
What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs.
What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist.
So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law.
Claim: “A settlement will force a ‘clean model’ and kill creativity”
What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns.
What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large.
Claim: “You don’t own anything, you are renting, and your catalog can vanish”
This is the part where people accidentally become correct, but for the wrong reasons.
Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down.
Contract reality matters: the ToS is designed to give the platform broad rights and broad control.
The practical takeaway is simple and non-dramatic:
Back up your WAVs/stems and project notes locally. Always.
Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”
Possible: yes, as a policy choice.
Inevitable: no.
Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome.
So what are the real risks for Suno?
Think in terms of business incentives.
High probability changes
When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely.
Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits.
Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits.
Medium probability changes
It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes.
In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk.
Lower probability, but still worth planning for
There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported.
A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable.
What about us who actually do the work?
Here is the split that regulation will make clearer over time.
If you actually create something
If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas.
At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership.
If you do nothing and just press generate
This is where it all goes to shit, and yes, this is exactly where regulation is needed.
When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else.
So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine.
What you should do right now
This does not require panic. It does require using your head.
Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework.
That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved.
Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook.
So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
2f7e4a0d8c75dd7792918888f337748908ecb6f5
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
696e004598696c9b32ec7879894bc14619881ea9
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music […] CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
e7e71a61897ed20875ea43e501419311b91b35b1
696e004598696c9b32ec7879894bc14619881ea9
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user's sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
TITLE: People are predicting Suno’s death – how likely is it? DESCRIPTION: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main... CONTENT: Not long ago, Udio effectively took the “fine, we’ll license it” route: it reached a strategic agreement with Universal Music Group around a new licensed AI music platform planned for 2026. That came after the 2024 lawsuits became the main backdrop for the entire AI-music sector. In other words: this space is not moving toward “no regulation”. It is moving toward “pay for access, pay for rights, gate features, control the pipeline”. That context matters when people on Facebook start writing doom posts about Suno “going down” or getting “lobotomized”. I am not going to pretend the risk is zero. But the likely future is not “Suno dies”. The likely future is “Suno changes”. Table of Contents Toggle What is actually happeningWhy the “Suno will die” narrative keeps showing upLatest claims I have seen in that threadClaim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music”Claim: “A settlement will force a ‘clean model’ and kill creativity”Claim: “You don’t own anything, you are renting, and your catalog can vanish”Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky”So what are the real risks for Suno?High probability changesMedium probability changesLower probability, but still worth planning forWhat about us who actually do the work?If you actually create somethingIf you do nothing and just press generateWhat you should do right now What is actually happening The lawsuits are real. In June 2024, the major labels sued Suno and Udio for alleged copyright infringement tied to training data and generated outputs. At the same time, licensing deals are real as well. Udio has a publicly announced agreement with Universal Music Group aimed at building a licensed AI music creation platform, with a stated target around 2026. Suno is moving in the same direction. Warner Music Group has entered a licensing partnership with Suno that also points toward licensed models in 2026, along with changes to how downloads and access are handled. Taken together, this follows a familiar industry pattern: first comes litigation, then comes licensing, once it becomes clear that the technology itself is not going away. Why the “Suno will die” narrative keeps showing up This narrative tends to appear because many doom posts combine several different things and present them as a single, coherent story. First, there is a real legal problem. Lawsuits against AI-music platforms exist, and they are serious enough to affect business decisions and long-term strategy. Second, there is a real contract reality. Terms of Service are written to protect the platform, not the user’s sense of authorship or emotional investment, and they already allow broad control over access and usage. Third, a speculative causal chain is often added on top. A temporary outage is interpreted as legal panic, which then becomes secret audits, year-end reporting pressure, or a hidden rollout of copyright filtering. The first two elements are grounded in reality. The third is usually narrative-building rather than evidence. Latest claims I have seen in that thread Claim: “Suno was trained on all humanity’s music, therefore it will be forced into public domain and stock music” What holds: Licensing pressure is pushing companies toward licensed datasets and opt-in catalogs. What does not: “Licensed” does not automatically mean “Mozart only”. Licensed can mean modern catalogs, if the business deals exist. So the conclusion “it will become elevator music” is not a fact. It is a taste prediction dressed up as law. Claim: “A settlement will force a ‘clean model’ and kill creativity” What holds: Restrictions can reduce the model’s freedom to imitate specific mainstream patterns. What does not: Creativity is not a single knob called “trained illegally”. Plenty of music is great under constraints. Also, new licensed catalogs can still be large. Claim: “You don’t own anything, you are renting, and your catalog can vanish” This is the part where people accidentally become correct, but for the wrong reasons. Platform risk is real: any cloud service can change tiers, cap downloads, remove features, or even shut down. Contract reality matters: the ToS is designed to give the platform broad rights and broad control. The practical takeaway is simple and non-dramatic: Back up your WAVs/stems and project notes locally. Always. Claim: “Suno will retroactively lock or delete older songs because the old models are legally risky” Possible: yes, as a policy choice. Inevitable: no. Companies do sometimes quarantine “legacy” features. They also often keep them accessible to avoid user revolt. The honest position is: it is a risk, but not a guaranteed outcome. So what are the real risks for Suno? Think in terms of business incentives. High probability changes When licensed models are introduced, older models are likely to be phased out over time rather than supported indefinitely. Download rules are also likely to tighten. Free tiers may lose download rights entirely, while paid tiers may face caps or stricter limits. Pricing and credit structures are likely to change as well. Licensing is expensive, and those costs tend to be passed down to users through higher prices, fewer credits, or tighter usage limits. Medium probability changes It is also plausible that Suno will introduce stronger similarity or compliance checks. This would not necessarily resemble YouTube-style Content ID systems, but rather softer pressure aimed at avoiding the generation of obvious sound-alikes. In addition, restrictions on uploads may increase. This is particularly likely when users upload audio files specifically to steer or constrain generations, as that carries higher legal and licensing risk. Lower probability, but still worth planning for There is also a lower-probability risk that access to some legacy outputs could be removed retroactively, or that such material could be reclassified as non-commercial or unsupported. A complete shutdown of the service is unlikely, but it is never entirely impossible in any SaaS-based business and should not be treated as unthinkable. What about us who actually do the work? Here is the split that regulation will make clearer over time. If you actually create something If you write lyrics, arrange, edit, re-record, mix, master, and build something with intent, you can still treat Suno as a sketchpad, as a collaborator, and as a generator of stems and ideas. At the same time, you should behave accordingly. That means keeping source files and version history, documenting what you actually did in terms of lyrics, edits, arrangement choices, and post-production, and not assuming that a paid subscription automatically equals copyright ownership. If you do nothing and just press generate This is where it all goes to shit, and yes, this is exactly where regulation is needed. When people brag “I created and produced this” while doing absolutely nothing, they are not just annoying. They flood the platforms with garbage. Output turns into spam, quality drops, and the legal risk goes up. That is what forces companies to lock things down harder for everyone else. So my position is simple and not negotiable. Regulation is welcome, not to kill AI music, but to put clear lines around licensing, consent, attribution, and responsibility. And if you want credit for a piece of music, you need to have actually contributed something. Otherwise you are not a creator, you are just occupying space in a very loud machine. What you should do right now This does not require panic. It does require using your head. Read the agreement you are actually using. Not a Reddit summary, not a Facebook hot take, not even this article – but the Terms of Service as written. The copyright attorney whose video was linked in that thread has been issuing the same warnings for years, across multiple AI platforms. Her core message has always been the same: these services are built to protect the company first, and whatever rights you think you have only exist within that framework. That does not mean Suno is about to implode, or that your music will suddenly be deleted tomorrow. It does mean that copyright pressure will eventually collide with the current free-for-all, because it always does when enough money is involved. Whether that collision results in fines, settlements, licensing fees, tighter controls, or all of the above depends largely on how much capital Suno has set aside to absorb legal pressure, pay damages, or buy peace through licensing. None of that is visible to users, and none of it is decided by vibes on Facebook. So the reasonable position is boring but solid. Keep local copies of anything you care about. Treat Suno as a tool, not a vault. Assume rules will tighten over time. And stop confusing convenience with ownership.
2f7e4a0d8c75dd7792918888f337748908ecb6f5
ebc4881ceeb7fba08d75edb6c73fd894dce57b22
696e004598696c9b32ec7879894bc14619881ea9
e7e71a61897ed20875ea43e501419311b91b35b1
7048054bb2d73799a6f2563ca0267e8a302b4ff0I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat
@echo off setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul
REM File passed from Explorer set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"
[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"
while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done
echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"
if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true
echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi
echo "==> Installing compatible stack (no forced uninstall)"
pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116
echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF
echo "" echo "Done." echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash set -euo pipefail
if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi
INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi
BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"
if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi
TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT
echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"
ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )
if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:" echo " $OUTPUT"
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
7048054bb2d73799a6f2563ca0267e8a302b4ff0
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
b0fbb9c4287dd26aa452f1adc93e224e681051e1
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
7048054bb2d73799a6f2563ca0267e8a302b4ff0
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6dI’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat
@echo off setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul
REM File passed from Explorer set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"
[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"
while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done
echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"
if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true
echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi
echo "==> Installing compatible stack (no forced uninstall)"
pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116
echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF
echo "" echo "Done." echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash set -euo pipefail
if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi
INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi
BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"
if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi
TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT
echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"
ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )
if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:" echo " $OUTPUT"
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
7048054bb2d73799a6f2563ca0267e8a302b4ff0
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
b0fbb9c4287dd26aa452f1adc93e224e681051e1
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
7048054bb2d73799a6f2563ca0267e8a302b4ff0
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
b0fbb9c4287dd26aa452f1adc93e224e681051e1I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat
@echo off setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul
REM File passed from Explorer set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"
[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"
while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done
echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"
if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true
echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi
echo "==> Installing compatible stack (no forced uninstall)"
pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116
echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF
echo "" echo "Done." echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash set -euo pipefail
if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi
INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi
BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"
if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi
TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT
echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"
ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )
if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:" echo " $OUTPUT"
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
7048054bb2d73799a6f2563ca0267e8a302b4ff0
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
b0fbb9c4287dd26aa452f1adc93e224e681051e1
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
7048054bb2d73799a6f2563ca0267e8a302b4ff0
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2dI’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents Toggle whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself whisper.bat
@echo off setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö) chcp 65001 >nul
REM File passed from Explorer set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now) for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file wsl bash -lc "/usr/local/tornevall/whisper "%WSL_FILE%""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT*\shell\WhisperWSL] @="Transkribera med Whisper (WSL)" "Icon"="wsl.exe"
[HKEY_CLASSES_ROOT*\shell\WhisperWSL\command] @=""F:\viktigt\Private\Linux-Scripts\Whisper.bat" "%1""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}" MODE="install"
while getopts ":u" opt; do case "$opt" in u) MODE="uninstall" ;; *) echo "Usage: $0 [-u]" exit 1 ;; esac done
echo "==> Whisper installer (GTX 1060 compatible)" echo "==> Mode: $MODE"
if [[ ! -d "$VENV_DIR" ]]; then echo "Error: venv not found: $VENV_DIR" exit 1 fi
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
if [[ "$MODE" == "uninstall" ]]; then echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true pip uninstall -y numpy || true
echo "" echo "Done." echo "Uninstall completed. Nothing else touched." exit 0 fi
echo "==> Installing compatible stack (no forced uninstall)"
pip install
numpy==1.26.4
torch==1.13.1+cu116
torchvision==0.14.1+cu116
torchaudio==0.13.1
--extra-index-url https://download.pytorch.org/whl/cu116
echo "==> Verifying environment" python - << 'EOF' import torch, numpy print("Torch:", torch.version) print("NumPy:", numpy.version) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) print("Capability:", torch.cuda.get_device_capability(0)) EOF
echo "" echo "Done." echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash set -euo pipefail
if [[ $# -lt 1 ]]; then echo "Usage: whisper <input.extension> [model] [language]" exit 1 fi
INPUT="$1" MODEL="${2:-small}" LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then echo "Error: Input file not found: $INPUT" exit 1 fi
BASENAME="$(basename "$INPUT")" STEM="${BASENAME%.*}" OUTDIR="$(dirname "$INPUT")" OUTPUT="$OUTDIR/$STEM.txt"
if [[ -f "$OUTPUT" ]]; then echo "Error: Output file already exists:" echo " $OUTPUT" echo "Aborting to avoid overwrite." exit 1 fi
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}" WHISPER_BIN="whisper" if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then WHISPER_BIN="$WHISPER_VENV/bin/whisper" fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then echo "Error: whisper not found in PATH or venv." exit 1 fi
TMPDIR="$(mktemp -d)" cleanup() { rm -rf "$TMPDIR"; } trap cleanup EXIT
echo "==> Transcribing:" echo " input: $INPUT" echo " output: $OUTPUT" echo " model: $MODEL" echo " lang: ${LANGUAGE:-auto}"
ARGS=( "$INPUT" --model "$MODEL" --output_dir "$TMPDIR" --output_format txt --task transcribe --verbose False --fp16 False )
if [[ -n "$LANGUAGE" ]]; then ARGS+=( --language "$LANGUAGE" ) fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt" if [[ ! -f "$GENERATED_TXT" ]]; then FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)" if [[ -z "${FOUND_TXT:-}" ]]; then echo "Error: No .txt output produced." exit 1 fi GENERATED_TXT="$FOUND_TXT" fi
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:" echo " $OUTPUT"
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
7048054bb2d73799a6f2563ca0267e8a302b4ff0
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc. I first found a Samsung app that could handle […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
b0fbb9c4287dd26aa452f1adc93e224e681051e1
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text […]
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you're expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I'm not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
TITLE:
The Struggle: Transcribe stuff for free with Whisper and WSL/Linux – With a GTX 1060
DESCRIPTION:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that...
CONTENT:
I’ve been struggling with transcription issues for quite some time, for a variety of reasons. Examples: I need a text transcribed to be pasted into Suno, that only exists as a m4a-file (i.e. music, that sometimes has hardcoded subtitles that has to be manually transcribed). Etc.
I first found a Samsung app that could handle transcription, but it quickly became clear that it was limited to its own ecosystem. In practice, you could only transcribe audio that had been recorded inside that specific app.
Since then, I’ve been looking around on and off, and more recently I picked it up again as the need increased – partly to get correct transcriptions, but also to be able to process any audio files I download or record. Samsung’s app is decent, but the quality varies. Right after recording, it performs a quick transcription, but the result is noticeably worse than if you re-run the transcription once the audio file is fully finalized.
At that point I came across “Whisper Transcribe” for Windows. It works, but it requires an account and, of course, paid credits to continue transcribing. You get a small number of free credits at first, but once those run out, you’re expected to pay quite a bit just to keep going.
I already knew that there must be software capable of doing this completely locally. I had previously discovered that Whisper exists in an open-source form as well (I’m not even sure whether the Windows application actually builds on that or not). So today I decided to finally figure out how to do it properly myself.
The end result was the following (thanks to ChatGPT):
A Whisper installer for WSL/Linux, with explicit support for NVIDIA GTX 1060 – something newer Python libraries clearly no longer handle well.
A Whisper runner for WSL/Linux: run whisper <input-file> and get a .txt transcript generated from the audio file.
A Windows Registry file that allows transcription to be executed directly from Windows Explorer via right-click.
A batch file that bridges Windows and WSL so everything runs cleanly, including proper handling of spaces and non-ASCII characters in file names.
The result is a fully local, offline transcription setup that works on any audio file, without accounts, credits, or vendor lock-in.
WSL uses python and pip…
Table of Contents
Toggle
whisper.batwhisper.reg (explorer right clicks)installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)The script itself
whisper.bat
@echo off
setlocal EnableExtensions
REM Force UTF-8 codepage (fixes å ä ö)
chcp 65001 >nul
REM File passed from Explorer
set "WIN_FILE=%~1"
REM Convert Windows path to WSL path (UTF-8 safe now)
for /f "delims=" %%i in ('wsl wslpath "%WIN_FILE%"') do set "WSL_FILE=%%i"
REM Run whisper on that file
wsl bash -lc "/usr/local/tornevall/whisper \"%WSL_FILE%\""
endlocal
whisper.reg (explorer right clicks)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL]
@="Transkribera med Whisper (WSL)"
"Icon"="wsl.exe"
[HKEY_CLASSES_ROOT\*\shell\WhisperWSL\command]
@="\"F:\\viktigt\\Private\\Linux-Scripts\\Whisper.bat\" \"%1\""
installer för WSL/Linux (with 1060-compatibilty and pre-uninstaller)
To make sure stuff are removed properly before reinstalling there is a -u switch for this in the script. In case you make it wrong the first time, this switch is there to make sure you can reinstall it a second time without conflicts.
#!/usr/bin/env bash
set -euo pipefail
VENV_DIR="${VENV_DIR:-$HOME/.venvs/whisper}"
MODE="install"
# --- Parse args ---
while getopts ":u" opt; do
case "$opt" in
u) MODE="uninstall" ;;
*)
echo "Usage: $0 [-u]"
exit 1
;;
esac
done
echo "==> Whisper installer (GTX 1060 compatible)"
echo "==> Mode: $MODE"
# --- Sanity ---
if [[ ! -d "$VENV_DIR" ]]; then
echo "Error: venv not found: $VENV_DIR"
exit 1
fi
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
# ==================================================
# UNINSTALL MODE (-u)
# ==================================================
if [[ "$MODE" == "uninstall" ]]; then
echo "==> Uninstalling incompatible packages ONLY (-u)"
pip uninstall -y torch torchvision torchaudio || true
pip uninstall -y numpy || true
echo ""
echo "Done."
echo "Uninstall completed. Nothing else touched."
exit 0
fi
# ==================================================
# INSTALL MODE (DEFAULT)
# ==================================================
echo "==> Installing compatible stack (no forced uninstall)"
pip install \
numpy==1.26.4 \
torch==1.13.1+cu116 \
torchvision==0.14.1+cu116 \
torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cu116
# --- Verify ---
echo "==> Verifying environment"
python - << 'EOF'
import torch, numpy
print("Torch:", torch.__version__)
print("NumPy:", numpy.__version__)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Capability:", torch.cuda.get_device_capability(0))
EOF
echo ""
echo "Done."
echo "Install completed without destructive actions."
The script itself
The script can run without any switches – and only with the audio file intended to be transcribed (but as you can see, it can do a bit more).
#!/usr/bin/env bash
set -euo pipefail
# whisper-run.sh
# Usage:
# whisper <input.extension> [model] [language]
#
# Output:
# <input-filename>.txt (same directory)
#
# Behaviour:
# - Refuses to overwrite existing .txt
# - Stops execution if output exists
if [[ $# -lt 1 ]]; then
echo "Usage: whisper <input.extension> [model] [language]"
exit 1
fi
INPUT="$1"
MODEL="${2:-small}"
LANGUAGE="${3:-}"
if [[ ! -f "$INPUT" ]]; then
echo "Error: Input file not found: $INPUT"
exit 1
fi
BASENAME="$(basename "$INPUT")"
STEM="${BASENAME%.*}"
OUTDIR="$(dirname "$INPUT")"
OUTPUT="$OUTDIR/$STEM.txt"
# --- Refuse overwrite ---
if [[ -f "$OUTPUT" ]]; then
echo "Error: Output file already exists:"
echo " $OUTPUT"
echo "Aborting to avoid overwrite."
exit 1
fi
# Prefer venv whisper if installed via install script
WHISPER_VENV="${WHISPER_VENV:-$HOME/.venvs/whisper}"
WHISPER_BIN="whisper"
if [[ -x "$WHISPER_VENV/bin/whisper" ]]; then
WHISPER_BIN="$WHISPER_VENV/bin/whisper"
fi
if [[ "$WHISPER_BIN" == "whisper" ]] && ! command -v whisper >/dev/null 2>&1; then
echo "Error: whisper not found in PATH or venv."
exit 1
fi
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
echo "==> Transcribing:"
echo " input: $INPUT"
echo " output: $OUTPUT"
echo " model: $MODEL"
echo " lang: ${LANGUAGE:-auto}"
ARGS=(
"$INPUT"
--model "$MODEL"
--output_dir "$TMPDIR"
--output_format txt
--task transcribe
--verbose False
--fp16 False
)
if [[ -n "$LANGUAGE" ]]; then
ARGS+=( --language "$LANGUAGE" )
fi
"$WHISPER_BIN" "${ARGS[@]}"
GENERATED_TXT="$TMPDIR/$STEM.txt"
if [[ ! -f "$GENERATED_TXT" ]]; then
FOUND_TXT="$(find "$TMPDIR" -maxdepth 1 -type f -name "*.txt" | head -n 1 || true)"
if [[ -z "${FOUND_TXT:-}" ]]; then
echo "Error: No .txt output produced."
exit 1
fi
GENERATED_TXT="$FOUND_TXT"
fi
# --- Final move (no overwrite possible due to earlier check) ---
mv "$GENERATED_TXT" "$OUTPUT"
echo "==> Done:"
echo " $OUTPUT"
7048054bb2d73799a6f2563ca0267e8a302b4ff0
16a1cc3a9de52040624c9a9a5d778dc05d7aaf6d
b0fbb9c4287dd26aa452f1adc93e224e681051e1
30b1980e02b98f24cf08ff2a3b59ce922f5c1d2d