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.
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:
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.
Open Automator, gelegen in uw toepassingen map en selecteer Service als het documenttype.
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.
In de acties lijst, zoeken naar schelp en je ziet een actie genaamd Voer Shell Script uit. Sleep het naar 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.
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.
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: 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: 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: 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: 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.
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.
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.
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.
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.
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.