จัดการเสียงในงานนำเสนอด้วย Python
ภาพรวม
บทความนี้อธิบายวิธีการทำงานกับเฟรมเสียงใน Aspose.Slides แสดงวิธีเพิ่มเสียงฝังในสไลด์ ปรับแต่งภาพย่อของเฟรมเสียง กำหนดค่าตัวเลือกการเล่นเช่น ปริมาณเสียง การวนซ้ำ การซ่อน การตัดและระยะเวลาเฟด รวมถึงการสกัดเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์
สร้างเฟรมเสียง
Aspose.Slides สำหรับ Python ผ่าน .NET ให้คุณเพิ่มไฟล์เสียงลงในสไลด์ ไฟล์เสียงจะถูกฝังในสไลด์เป็นเฟรมเสียง
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงของสไลด์ผ่านดัชนีของมัน
- โหลดสตรีมไฟล์เสียงที่คุณต้องการฝังในสไลด์
- เพิ่มเฟรมเสียงที่ฝังไว้ (ซึ่งมีไฟล์เสียง) ลงในสไลด์
- ตั้งค่า PlayMode และ
Volumeที่เปิดโดยอ็อบเจกต์ IAudioFrame - บันทึกงานนำเสนอที่แก้ไขแล้ว
โค้ด Python นี้แสดงวิธีเพิ่มเฟรมเสียงที่ฝังไว้ลงในสไลด์:
import aspose.slides as slides
# สร้างอินสแตนซ์คลาสการนำเสนอที่แทนไฟล์การนำเสนอ
with slides.Presentation() as pres:
# ดึงสไลด์แรก
sld = pres.slides[0]
# โหลดไฟล์เสียง wav ไปเป็นสตรีม
with open(path + "sampleaudio.wav", "rb") as in_file:
# เพิ่มเฟรมเสียง
audio_frame = sld.shapes.add_audio_frame_embedded(50, 150, 100, 100, in_file)
# ตั้งค่าโหมดการเล่นและระดับเสียงของออดิโอ
audio_frame.play_mode = slides.AudioPlayModePreset.AUTO
audio_frame.volume = slides.AudioVolumeMode.LOUD
# บันทึกไฟล์ PowerPoint ลงดิสก์
pres.save("AudioFrameEmbed_out.pptx", slides.export.SaveFormat.PPTX)
เปลี่ยนภาพย่อเฟรมเสียง
เมื่อคุณเพิ่มไฟล์เสียงเข้าในงานนำเสนอ เสียงจะแสดงเป็นเฟรมพร้อมภาพเริ่มต้นมาตรฐาน (ดูภาพในส่วนด้านล่าง) คุณสามารถเปลี่ยนภาพย่อของเฟรมเสียง (กำหนดภาพที่คุณต้องการ) ได้
โค้ด Python นี้แสดงวิธีเปลี่ยนภาพย่อหรือภาพแสดงตัวอย่างของเฟรมเสียง:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# เพิ่มเฟรมเสียงไปยังสไลด์ด้วยตำแหน่งและขนาดที่ระบุ.
with open("sample2.mp3", "rb") as audio_fs:
audioFrame = slide.shapes.add_audio_frame_embedded(150, 100, 50, 50, audio_fs)
# เพิ่มรูปภาพไปยังทรัพยากรของงานนำเสนอ.
with open("eagle.jpeg", "rb") as image_fs:
data = image_fs.read()
audioImage = presentation.images.add_image(data)
# ตั้งค่ารูปภาพสำหรับเฟรมเสียง.
audioFrame.picture_format.picture.image = audioImage
#บันทึกงานนำเสนอที่แก้ไขแล้วลงดิสก์
presentation.save("example_out.pptx", slides.export.SaveFormat.PPTX)
เปลี่ยนตัวเลือกการเล่นเสียง
Aspose.Slides สำหรับ Python ผ่าน .NET ให้คุณเปลี่ยนตัวเลือกที่ควบคุมการเล่นหรือคุณสมบัติของเสียง ตัวอย่างเช่น คุณสามารถปรับระดับเสียงของเสียง ตั้งค่าให้เสียงเล่นวนซ้ำ หรือแม้กระทั่งซ่อนไอคอนเสียง
The Audio Options pane in Microsoft PowerPoint:

PowerPoint Audio Options ที่สอดคล้องกับคุณสมบัติของ Aspose.Slides AudioFrame :
- Start รายการดรอปดาวน์ตรงกับคุณสมบัติ AudioFrame.play_mode
- Volume ตรงกับคุณสมบัติ AudioFrame.volume
- Play Across Slides ตรงกับคุณสมบัติ AudioFrame.play_across_slides
- Loop until Stopped ตรงกับคุณสมบัติ AudioFrame.play_loop_mode
- Hide During Show ตรงกับคุณสมบัติ AudioFrame.hide_at_showing
- Rewind after Playing ตรงกับคุณสมบัติ AudioFrame.rewind_audio
PowerPoint Editing options ที่สอดคล้องกับคุณสมบัติของ Aspose.Slides AudioFrame :
- Fade In ตรงกับคุณสมบัติ AudioFrame.fade_in_duration
- Fade Out ตรงกับคุณสมบัติ AudioFrame.fade_out_duration
- Trim Audio Start Time ตรงกับคุณสมบัติ AudioFrame.trim_from_start
- Trim Audio End Time ค่าเท่ากับระยะเวลาของเสียงลบด้วยค่าของคุณสมบัติ AudioFrame.trim_from_end
The PowerPoint Volume controll on the audio control panel corresponds to the AudioFrame.volume_value property. It lets you change the audio volume as a percentage.
นี่คือวิธีเปลี่ยนตัวเลือกการเล่นเสียง:
- สร้าง หรือรับ Audio Frame
- ตั้งค่าค่าใหม่สำหรับคุณสมบัติของ Audio Frame ที่ต้องการปรับ
- บันทึกไฟล์ PowerPoint ที่แก้ไขแล้ว
โค้ด Python นี้แสดงการทำงานที่ปรับตัวเลือกของเสียง:
import aspose.slides as slides
with slides.Presentation("AudioFrameEmbed_out.pptx") as pres:
# ดึงรูปร่าง AudioFrame
audioFrame = pres.slides[0].shapes[0]
# ตั้งค่าโหมดการเล่นให้เล่นเมื่อคลิก
audioFrame.play_mode = slides.AudioPlayModePreset.ON_CLICK
# ตั้งค่าปริมาณเสียงเป็นต่ำ
audioFrame.volume = slides.AudioVolumeMode.LOW
# ตั้งค่าให้เสียงเล่นผ่านหลายสไลด์
audioFrame.play_across_slides = True
# ปิดการวนลูปสำหรับเสียง
audioFrame.play_loop_mode = False
# ซ่อน AudioFrame ในระหว่างการแสดงสไลด์
audioFrame.hide_at_showing = True
# รีเวินด์เสียงกลับไปเริ่มต้นหลังการเล่น
audioFrame.rewind_audio = True
# บันทึกไฟล์ PowerPoint ลงดิสก์
pres.save("AudioFrameEmbed_changed.pptx", slides.export.SaveFormat.PPTX)
โค้ด Python ตัวอย่างนี้แสดงวิธีเพิ่มเฟรมเสียงใหม่พร้อมเสียงฝัง, ตัดส่วนทำให้สั้น, และตั้งค่าระยะเวลาเฟด:
with slides.Presentation() as pres:
slide = pres.slides[0]
with open("sampleaudio.mp3", "rb") as audio_stream:
audio_data = audio_stream.read()
audio = pres.audios.add_audio(audio_data)
audio_frame = slide.shapes.add_audio_frame_embedded(50, 50, 100, 100, audio)
# กำหนดจุดเริ่มต้นการตัดเป็น 1.5 วินาที
audio_frame.trim_from_start = 1500.0
# กำหนดจุดสิ้นสุดการตัดเป็น 2 วินาที
audio_frame.trim_from_end = 2000.0
# กำหนดระยะเวลาเฟดอินเป็น 200 มิลลิวินาที
audio_frame.fade_in_duration = 200.0
# กำหนดระยะเวลาเฟดเอาต์เป็น 500 มิลลิวินาที
audio_frame.fade_out_duration = 500.0
pres.save("AudioFrameTrimFade_out.pptx", slides.export.SaveFormat.PPTX)
โค้ดตัวอย่างต่อไปนี้แสดงวิธีดึงเฟรมเสียงที่ฝังไว้และตั้งค่าปริมาณเสียงเป็น 85%:
with slides.Presentation("AudioFrameEmbed_out.pptx") as pres:
# ดึงรูปร่างเฟรมเสียง
audio_frame = pres.slides[0].shapes[0]
# ตั้งค่าปริมาณเสียงเป็น 85%
audio_frame.volume_value = 85.0
pres.save("AudioFrameValue_out.pptx", slides.export.SaveFormat.PPTX)
จัดการคำบรรยายเสียง
Aspose.Slides ให้คุณเพิ่มคำบรรยายแบบปิดสำหรับเฟรมเสียงผ่านคุณสมบัติ caption_tracks คุณสมบัตินี้จะคืนค่า CaptionsCollection ซึ่งช่วยให้คุณเพิ่มแทร็กคำบรรยาย WebVTT, วนลูปผ่านแทร็กที่มีอยู่, และลบแทร็กเมื่อจำเป็น
เพิ่มคำบรรยายเสียง
ใช้คุณสมบัติ caption_tracks เพื่อแนบแทร็กคำบรรยายหนึ่งหรือหลายแทร็กให้กับเฟรมเสียง ในตัวอย่างต่อไปนี้ไฟล์เสียงจะถูกเพิ่มลงในสไลด์ จากนั้นแทร็กคำบรรยายใหม่จะถูกโหลดจากไฟล์ .vtt
with slides.Presentation() as presentation:
with open("audio.mp3", "rb") as audio_stream:
audio = presentation.audios.add_audio(audio_stream.read())
slide = presentation.slides[0]
audio_frame = slide.shapes.add_audio_frame_embedded(10, 10, 50, 50, audio)
# เพิ่มแทร็กคำบรรยายใหม่จากไฟล์ WebVTT.
audio_frame.caption_tracks.add("New track", "track.vtt")
presentation.save("audio_with_captions.pptx", slides.export.SaveFormat.PPTX)
สกัดคำบรรยายเสียง
คุณสามารถวนลูปผ่านแทร็กคำบรรยายที่เชื่อมต่อกับเฟรมเสียงและบันทึกเป็นไฟล์ .vtt แต่ละแทร็กคำบรรยายจะเผยข้อมูลไบต์และตัวระบุที่ไม่ซ้ำกัน ซึ่งสามารถใช้เมื่อส่งออกคำบรรยาย
with slides.Presentation("audio_with_captions.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.AudioFrame):
audio_frame = shape
for caption_track in audio_frame.caption_tracks:
# บันทึกแทร็กคำบรรยายเป็นไฟล์ .vtt
with open(f"{caption_track.caption_id}.vtt", "wb") as track_stream:
track_stream.write(caption_track.binary_data)
ลบคำบรรยายเสียง
เพื่อลบคำบรรยายจากเฟรมเสียง ใช้วิธีการที่ให้โดย CaptionsCollection เช่น clear, remove, หรือ remove_at. ตัวอย่างต่อไปนี้ลบแทร็กคำบรรยายทั้งหมดจากเฟรมเสียง
with slides.Presentation("audio_with_captions.pptx") as presentation:
slide = presentation.slides[0]
audio_frame = slide.shapes[0] # ประเภท: slides.AudioFrame
# ลบแทร็กคำบรรยายทั้งหมดจากเฟรมเสียง.
audio_frame.caption_tracks.clear()
presentation.save("audio_without_captions.pptx", slides.export.SaveFormat.PPTX)
สกัดเสียง
Aspose.Slides สำหรับ Python ผ่าน .NET ให้คุณสกัดเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์ ตัวอย่างเช่น คุณสามารถสกัดเสียงที่ใช้ในสไลด์เฉพาะได้
- สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีเสียง
- รับอ้างอิงของสไลด์ที่เกี่ยวข้องผ่านดัชนีของมัน
- เข้าถึงการเปลี่ยนสไลด์ของสไลด์นั้น
- สกัดเสียงเป็นข้อมูลไบต์
โค้ด Python นี้แสดงวิธีสกัดเสียงที่ใช้ในสไลด์:
import aspose.slides as slides
#with slides.Presentation("AudioSlide.pptx") as pres:
with slides.Presentation("AudioFrameEmbed_changed.pptx") as pres:
# เข้าถึงสไลด์ที่ต้องการ
slide = pres.slides[0]
# ดึงเอฟเฟกต์การเปลี่ยนสไลด์โชว์สำหรับสไลด์
transition = slide.slide_show_transition
#สกัดเสียงเป็นอาร์เรย์ไบต์
audio = transition.sound.binary_data
print("Length: " + str(len(audio)))
คำถามที่พบบ่อย
ฉันสามารถใช้ไฟล์เสียงเดียวกันบนหลายสไลด์โดยไม่ทำให้ไฟล์ขนาดใหญ่ขึ้นได้หรือไม่?
ใช่ เพิ่มเสียงเพียงครั้งเดียวใน audio collection ที่ใช้ร่วมกันของงานนำเสนอและสร้างเฟรมเสียงเพิ่มเติมที่อ้างอิงสินทรัพย์ที่มีอยู่แล้ว วิธีนี้จะหลีกเลี่ยงการทำซ้ำข้อมูลสื่อและทำให้ขนาดงานนำเสนออยู่ภายในขอบเขตที่ควบคุมได้
ฉันสามารถแทนที่เสียงในเฟรมเสียงที่มีอยู่โดยไม่ต้องสร้างรูปร่างใหม่ได้หรือไม่?
ใช่ สำหรับเสียงแบบลิงก์ ให้อัปเดต link path ให้ชี้ไปยังไฟล์ใหม่ สำหรับเสียงที่ฝังไว้ ให้สลับออบเจกต์ embedded audio กับออบเจกต์อื่นจาก audio collection ของงานนำเสนอ รูปแบบของเฟรมและการตั้งค่าการเล่นส่วนใหญ่จะคงเดิม
การตัดส่วนทำให้ข้อมูลเสียงต้นฉบับที่จัดเก็บในงานนำเสนอเปลี่ยนหรือไม่?
ไม่ การตัดส่วนปรับแค่ขอบเขตการเล่นเท่านั้น ไบต์เสียงต้นฉบับจะไม่ถูกเปลี่ยนแปลงและยังคงเข้าถึงได้ผ่านเสียงที่ฝังหรือผ่าน [audio collection] ของงานนำเสนอ