วิธีทำให้คำสั่ง“ พูด” พูดและส่งออกไปยังไฟล์ในเวลาเดียวกัน


4

เมื่อใช้sayคำสั่งฉันสามารถให้ตัวเลือก-o (file name)เพื่อบันทึกลงไฟล์ อย่างไรก็ตามนั่นจะระงับสัญญาณเสียง

มีวิธีทำให้ทั้งสองอย่างในคำสั่งเดียวหรือไม่?

คำตอบ:


3

มันดูเหมือนยากหรือเป็นไปไม่ได้ด้วยsayคำสั่งในตัว

คุณอาจสามารถเปลี่ยนเส้นทางเสียงจากsayการเป็นAUNetSendที่จะเขียนไปยังดิสก์และเล่นเสียง ดู Audio Hijack ด้านล่าง

espeak และ ffplay

คุณสามารถใช้โอเพ่นซอร์สespeakและffplayเครื่องมือต่าง ๆ เพื่อให้บรรลุเป้าหมายนี้ คำสั่งต่อไปนี้บอกว่า "Hello world" และสร้าง.wavไฟล์ของการบันทึก:

espeak --stdout "hello world" | tee -a hello.wav | ffplay -i -

คำสั่งรวมเครื่องมือสามอย่าง:

  • espeak แปลงข้อความเป็นเสียง
  • teeถูกใช้เพื่อโอนสายสำเนาของstdoutไฟล์
  • ffplay เล่นเสียง

espeakสามารถอ่านจากไฟล์หรือเว็บเพจโดยใช้fแฟล็ก:

espeak --stdout -f myfile.txt | tee -a myfile.wav | ffplay -i -

เครื่องมืออื่นเช่นffmpegหรือ iTunes สามารถใช้เพื่อแปลงwavไฟล์เป็นไฟล์ MP3 หรือ AAC

ติดตั้ง

การติดตั้งและ eSpeak ffplay ใช้HomebrewหรือMacPorts ด้วยการตั้งค่า HomeBrew คำสั่ง install คือ:

brew install espeak ffmpeg

จี้เสียง

อีกทางเลือกหนึ่งที่ดีคือการใช้เครื่องมือของบุคคลที่สามเช่นAudio Hijack :

บันทึกเสียงใด ๆ ด้วย Audio Hijack! บันทึกเสียงจากแอปพลิเคชันเช่น iTunes, Skype หรือ Safari หรือจากอุปกรณ์ฮาร์ดแวร์เช่นไมโครโฟนและเครื่องผสม

ภาพหน้าจอนี้แสดงให้เห็นถึง Audio Hijack ที่ถ่ายจาก Skype บันทึกลงดิสก์และเล่นผ่านลำโพง

จี้เสียงแยกเสียง


ขอบคุณสำหรับคำตอบที่ดีเยี่ยม! ฉันพยายามทำบางอย่างที่เฉพาะเจาะจงกับคำสั่งพูดแม้ว่า
redFur

เสียงจี้และเส้นทางผ่านAUNetSendโมดูลน่าจะเป็นตัวเลือกที่ดีที่สุดของคุณ โชคดี.
เกรแฮมมิลน์

4

ในหนึ่งคำสั่งด้วยคำสั่งในตัวsayไม่มี; ในสองคำสั่งในตัว ( sayและafplay) ใช่:

$ say -o /tmp/output-file.aiff Hello
$ afplay /tmp/output-file.aiff

ในตัวอย่างของฉันนี่ทำให้เกิดความล่าช้าเล็กน้อย

$ time sh -c "say Hello" 

real    0m0.778s
user    0m0.008s
sys 0m0.012s

$ time sh -c "say -o /tmp/output-file.aiff Hello && afplay /tmp/output-file.aiff"

real    0m1.048s
user    0m0.050s
sys 0m0.048s

@redFur โปรดทราบว่าฉันมีปัญหากับ "say -o": apple.stackexchange.com/questions/338792//
10543
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.