Class: AudioSegmentGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/parse_animation_to_tts.rb

Overview

Audio Segment Generator REQUIREMENTS: Create AudioSegmentGenerator class for individual segments SEMANTIC TOKENS: AUDIO_SEGMENT_GEN, SEGMENT_PROC ARCHITECTURE: Audio segment generation architecture IMPLEMENTATION: Generate individual audio segments from YAML data TEST: Test individual audio segment generation

Instance Method Summary collapse

Constructor Details

#initialize(tts_engine, config = {}) ⇒ AudioSegmentGenerator

REQUIREMENTS: Initialize audio segment generator with TTS engine SEMANTIC TOKENS: SEGMENT_GENERATOR_INIT, TTS_ENGINE_INTEGRATION ARCHITECTURE: Audio segment generator initialization IMPLEMENTATION: Initialize with TTS engine and configuration TEST: Test audio segment generator initialization



1568
1569
1570
1571
1572
1573
1574
1575
# File 'lib/parse_animation_to_tts.rb', line 1568

def initialize(tts_engine, config = {})
  @tts_engine = tts_engine
  @config = config
  @temp_dir = config[:temp_dir] || Dir.mktmpdir
  @output_format = config[:output_format] || 'wav'
  @generated_segments = []
  @quiet_mode = config[:quiet] || false
end

Instance Method Details

#cleanupObject

REQUIREMENTS: Clean up generated audio files SEMANTIC TOKENS: AUDIO_CLEANUP, TEMP_FILE_MANAGEMENT ARCHITECTURE: Audio file cleanup architecture IMPLEMENTATION: Clean up temporary audio files TEST: Test audio file cleanup and temporary file management



1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
# File 'lib/parse_animation_to_tts.rb', line 1664

def cleanup
  # REQUIREMENTS: Remove generated audio files
  # SEMANTIC TOKENS: FILE_CLEANUP, TEMPORARY_FILE_REMOVAL
  # ARCHITECTURE: File cleanup architecture
  # IMPLEMENTATION: Remove temporary audio files
  # TEST: Test file cleanup and temporary file removal
  @generated_segments.each do |segment|
    audio_file = segment['audio_file']
    if File.exist?(audio_file)
      File.delete(audio_file)
      puts "# INFO: Cleaned up audio file: #{audio_file}"
    end
  end
  
  @generated_segments.clear
end

#generate_segment(segment_data) ⇒ Object

REQUIREMENTS: Generate audio segment from YAML segment data SEMANTIC TOKENS: SEGMENT_AUDIO_GENERATION, YAML_PROC ARCHITECTURE: Audio segment generation from YAML IMPLEMENTATION: Convert YAML segment to audio file TEST: Test audio segment generation from YAML data



1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
# File 'lib/parse_animation_to_tts.rb', line 1582

def generate_segment(segment_data)
  # REQUIREMENTS: Extract text and voice settings from segment data
  # SEMANTIC TOKENS: SEGMENT_DATA_EXTRACT, VOICE_SETTINGS_PROC
  # ARCHITECTURE: Segment data processing architecture
  # IMPLEMENTATION: Extract text and voice settings from segment
  # TEST: Test segment data extraction and voice settings processing
  text = segment_data['text']
  voice_settings = extract_voice_settings(segment_data)
  
  # REQUIREMENTS: Generate audio file using TTS engine
  # SEMANTIC TOKENS: TTS_AUDIO_GEN, VOICE_SETTINGS_APP
  # ARCHITECTURE: TTS engine integration for audio generation
  # IMPLEMENTATION: Use TTS engine to generate audio with voice settings
  # TEST: Test TTS engine integration and voice settings application
  audio_file = @tts_engine.generate_audio(text, voice_settings)
  
  # REQUIREMENTS: Create segment metadata
  # SEMANTIC TOKENS: SEGMENT_METADATA_CREATE, AUDIO_METADATA
  # ARCHITECTURE: Segment metadata architecture
  # IMPLEMENTATION: Create metadata for generated audio segment
  # TEST: Test segment metadata creation and tracking
   = {
    'audio_file' => audio_file,
    'text' => text,
    'voice_settings' => voice_settings,
    'source_file' => segment_data['source_file'],
    'line_number' => segment_data['line_number'],
    'start_time' => segment_data['start_time'],
    'end_time' => segment_data['end_time'],
    'duration' => segment_data['end_time'] - segment_data['start_time'],
    'generated_at' => Time.now.iso8601
  }
  
  # REQUIREMENTS: Track generated segment
  # SEMANTIC TOKENS: SEGMENT_TRACKING, GENERATED_SEGMENTS
  # ARCHITECTURE: Segment tracking architecture
  # IMPLEMENTATION: Track generated segments for cleanup and management
  # TEST: Test segment tracking and management
  @generated_segments << 
  
  
end

#generate_segments(segments_data) ⇒ Object

REQUIREMENTS: Generate multiple audio segments from YAML data SEMANTIC TOKENS: BATCH_SEGMENT_GEN, MULTIPLE_SEGMENTS ARCHITECTURE: Batch audio segment generation IMPLEMENTATION: Generate multiple audio segments from YAML array TEST: Test batch audio segment generation



1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
# File 'lib/parse_animation_to_tts.rb', line 1630

def generate_segments(segments_data)
  # REQUIREMENTS: Process multiple segments with progress tracking
  # SEMANTIC TOKENS: BATCH_PROC, PROGRESS_TRACKING
  # ARCHITECTURE: Batch processing architecture
  # IMPLEMENTATION: Process multiple segments with progress reporting
  # TEST: Test batch processing and progress tracking
  generated_segments = []
  
  segments_data.each_with_index do |segment_data, index|
    # REQUIREMENTS: Generate individual segment with progress reporting
    # SEMANTIC TOKENS: INDIVIDUAL_SEGMENT_GEN, PROGRESS_REPORTING
    # ARCHITECTURE: Individual segment generation with progress
    # IMPLEMENTATION: Generate segment and report progress
    # TEST: Test individual segment generation with progress
    puts "# INFO: Generating segment #{index + 1}/#{segments_data.length}: #{segment_data['text'][0..50]}..."
    
    begin
       = generate_segment(segment_data)
      generated_segments << 
      puts "# INFO: Generated segment #{index + 1}: #{['audio_file']}"
    rescue => e
      puts "# ERROR: Failed to generate segment #{index + 1}: #{e.message}"
      raise e
    end
  end
  
  generated_segments
end

#generated_segmentsObject

REQUIREMENTS: Get generated segments metadata SEMANTIC TOKENS: SEGMENT_METADATA_ACCESS, GENERATED_SEGMENTS_INFO ARCHITECTURE: Segment metadata access architecture IMPLEMENTATION: Provide access to generated segments metadata TEST: Test segment metadata access and information



1686
1687
1688
# File 'lib/parse_animation_to_tts.rb', line 1686

def generated_segments
  @generated_segments.dup
end