Automator gebruiken om gesproken beltonen te genereren

In een eerdere tutorial, Geef je Mac een stem met tekst-naar-spraak, heb ik je laten zien hoe je de spraakfunctie van je Mac kunt gebruiken. Een specifiek deel van dat handboek beschrijft het proces van het creëren van een beltoon voor een gesproken woord met behulp van de Mac's zeggen commando en de Mac-app Ringer.

In deze zelfstudie laat ik u zien hoe u dit proces kunt automatiseren door een plug-in te maken voor Contactpersonen met Automator. Deze plug-in genereert automatisch een beltoon voor een gesproken woord die we kunnen gebruiken zonder eindeloos iets in Terminal te moeten typen.


Voordat we beginnen

Om het meeste uit onze ringtones te halen, heb je de Mac-app Ringer nodig ($ 3,99 van de Mac App Store). Ik zal uitleggen waarom deze app iets later nodig is.

Onze service voor contacten werkt als volgt:

  • Selecteer een contactnaam waarvoor we een beltoon willen maken.
  • Markeer de tekst van de naam, bijnaam of het bedrijf van de contactpersoon.
  • Klik met de rechtermuisknop op de geselecteerde tekst en bij het selecteren van onze service wordt automatisch een nieuwe ringtone gegenereerd en naar Ringer gestuurd om eventuele gaten of vervagen toe te voegen.
  • De beltoon kan vervolgens naar iTunes worden verzonden.

1. Automator

Ik ga een combinatie van Automator en een shellscript gebruiken om aan onze vereisten te voldoen. Automator is een uiterst krachtige automatiseringstool waarmee vrijwel iedereen extreem krachtige scripts kan maken met weinig of geen ervaring met scripting.

Automatorworkflows werken door een invoer te nemen, of dit nu een bestand of een tekstselectie is, en voeren er vervolgens een actie op uit.

Tip: Als u onbekend bent met Automator, bekijk dan onze eerdere zelfstudies, Automator 101: Uw eerste workflow opbouwen en dieper in automatisering duiken in OS X.

Stap 1

Open Automator, gelegen in uw toepassingen map en selecteer Service als het documenttype.


we gaan een service voor contactpersonen (adresboek) maken waarin elke tekst die we in de app selecteren, wordt omgezet in een gesproken beltoon voor onze iPhone.

Zodra een nieuw document is geladen, ziet u dat onze service een geselecteerd bericht verwacht te ontvangen tekst in elke toepassing. Laat de eerste optie zoals deze is, maar verander elke toepassing naar Contacten.


Wijzig de toepassing die moet worden gebruikt, zodat deze service alleen van toepassing is op Contactpersonen.

Stap 2

In de acties lijst, zoeken naar schelp en je ziet een actie genaamd Voer Shell Script uit. Sleep het naar het hoofdwerkstroomgebied.


Voeg de actie "Run Shell Script" toe aan het hoofdwerkstroomgebied.

U moet een kleine wijziging aanbrengen zodat we de tekst die we hebben geselecteerd, kunnen gebruiken als onderdeel van het script, ook wel a veranderlijk.

Verander de optie voor Input doorgeven van naar stdin naar als argumenten. De inhoud van de actie zal dan veranderen en verschijnen zoals hieronder.


Nadat het "Run Shell-script" aan onze werkstroom is toegevoegd, moet u ervoor zorgen dat de invoer wordt gewijzigd.

2. Het Shell-script

Om dingen gemakkelijker te maken, heb ik het script toegevoegd dat je hieronder moet invoeren. Het is alles wat je nodig hebt in de actie, zodat je de actie volledig kunt wissen en vervangen door de onderstaande tekst.


Dit is hoe de workflow eruit ziet met het shellscript voltooid.
 voor f in "$ @" do # Stap 1: Specificeer een tijdelijke locatie en bestandsnaam om onze ringtone op te slaan naar loc = ~ / Desktop bestandsnaam = temp.aiff # Stap 2: Gebruik de 'say' opdracht om onze ringtone te laten zeggen -o $ loc / $ bestandsnaam "$ 1 is aan het bellen" # Stap 3: Nu hebben we een tijdelijke ringtone gemaakt, laten we hem hernoemen mv $ loc / $ bestandsnaam "$ loc / $ 1.aiff" # Stap 4: Laten we dit tot slot openen Bel om eventuele laatste aanpassingen open te maken -a / Applications/Ringer.app "$ loc / $ 1.aiff" gedaan

Laten we dit script splitsen en onderzoeken wat het eerst doet.

Stap 1

 # Stap 1: Geef een tijdelijke locatie en bestandsnaam op om onze beltoon op te slaan naar loc = ~ / Desktop bestandsnaam = temp.aiff

Dit behandelt het instellen van tijdelijke informatie. In het bovenstaande script specificeren we een tijdelijke naam en locatie voor ons ringtone-bestand en wijzen we deze toe als een veranderlijk. Shell-scriptvariabelen beginnen met een dollarteken wanneer we ze willen gebruiken.

Hier begint onze beltoon temp.aiff (waarnaar wordt verwezen als $ filename) en worden opgeslagen in uw Desktop (verwezen naar Als $ loc).

Stap 2

 # Stap 2: Gebruik de opdracht 'say' om onze beltoon te genereren met de naam -o $ loc / $ bestandsnaam '$ 1 called'

Hier gebruiken we de zeggen opdracht om de naam van onze gemarkeerde contactpersoon te zeggen en op te slaan in een audiobestand. We gebruiken $ 1 om de input te vertegenwoordigen die Automator ons heeft gegeven. Onze service maakt gebruik van de tekst die we als input hebben geselecteerd en geeft deze door aan ons shellscript, vertegenwoordigd door $ 1. Net als onze tijdelijke bestandsnaam begint onze variabele hier met een dollarteken.

Onze ringtone zegt "Contactnaam belt. "Als je dit deed voor Johnny Appleseed, zou de ringtone zeggen" Johnny Appleseed belt ".

Stap 3

 # Stap 3: Nu hebben we een tijdelijke ringtone gemaakt, laten we hem hernoemen mv $ loc / $ bestandsnaam "$ loc / $ 1.aiff"

Met deze stap wordt het tijdelijke bestand hernoemd naar de naam van onze contactpersoon. Als ik bijvoorbeeld een beltoon voor 'Johnny Appleseed' heb gegenereerd, zou deze beginnen als temp.aiff en dan hernoemd worden naar Johnny Appleseed.aiff. Hoewel de zeggen commando maakt het bestand aan en noemt het, het gaat niet goed om met speciale tekens of spaties binnen de bestandsnaam. We hebben deze extra stap nodig, zodat we ons nieuwe bestand een naam kunnen geven na ons contact.

Stap 4

 # Stap 4: Laten we dit tenslotte openen in Ringer om eventuele laatste aanpassingen open te maken -a / Applications/Ringer.app "$ loc / $ 1.aiff"

Ten slotte wordt de nieuw gecreëerde beltoon in de app geopend Ringer, waardoor we een aantal aanvullende wijzigingen kunnen aanbrengen.


3. Genereer een ringtone

Zodra u het bovenstaande script hebt gekopieerd en geplakt in de Automator's Voer Shell Script uit actie, het is tijd om te sparen. Sla het bestand op met de naam Ringtone genereren ... en open dan Contacten.


Onze nieuwe Service verschijnt in het contextuele menu wanneer we met de rechtermuisknop op een gemarkeerde tekst klikken.

Selecteer een contact en markeer de naam, bijnaam of bedrijfsnaam. Klik met de rechtermuisknop en selecteer vervolgens Ringtone genereren ... die onder de Diensten menu. Zodra u het selecteert, wordt er onmiddellijk een nieuwe beltoon op uw bureaublad gemaakt met de naam van het contact als bestandsnaam. Een paar tellen later zal Ringer starten met de beltonen geladen en klaar om wijzigingen aan te brengen.


4. Bel


Met Ringer kunnen we een gat toevoegen aan het einde van onze ringtone, zodat onze iPhone niet al te irritant wordt.

De zeggen commando kan daadwerkelijk ringtone-bestanden genereren die compatibel zijn met een iPhone zonder eventuele aanvullende software. Als we het script zouden moeten veranderen zodat het een genereert .m4r bestand in plaats van .aiff dan kunnen we de app volledig omzeilen en in iTunes plaatsen.

Maar daar is een probleem mee. Beltonen op de iPhone-lus. Tenzij we een app als Ringer gebruiken om een ​​gat in onze ringtone te maken, wordt het ongelooflijk irritant om te horen "Johnny Appleseed rinkelt, Johnny Appleseed rinkelt, Johnny Appleseed rinkelt" zonder enige opening. Het zou zeker klinken alsof Siri buitengewoon ongeduldig met ons is!

Nu onze ringtone binnen Ringer is, zorg er dan voor dat u een opening van minstens drie seconden aan het einde van het bestand toevoegt. Op die manier is er een mooie opening voordat de ringtone lus.

Je kunt dan je ringtone naar iTunes sturen, waarbij de contactnaam nog steeds de beltoon is. Het enige wat u hoeft te doen is het toewijzen als een beltoon.


Afsluiten

Hoewel niet volledig autonoom, kunt u snel en eenvoudig een aantal verschillende beltonen voor verschillende contacten maken. Omdat de service die we hebben gemaakt, elke vorm van geselecteerde tekst uit Contacten heeft, kunt u een beltoon genereren met een bijnaam of bedrijfsnaam.


Met behulp van de Automator-service die bij deze zelfstudie wordt geleverd, kunt u de code bekijken of deze zelf gebruiken.

Als onderdeel van deze zelfstudie heb ik een kant-en-klare Automator-workflow toegevoegd die u kunt gebruiken. Open eenvoudigweg het bestand en u kunt selecteren of de workflow in Automator moet worden bewerkt of als een service moet worden geïnstalleerd.