�
L�g9 � �B � d Z ddlZddlmZ dd�Zdd�Z dd
�Zdd
�ZdS )zE
Various functions for finding/manipulating silence in AudioSegments
� N� )�db_to_float�� �����c � � t | � � }||k rg S t |� � | j z }g }||z
}t d|dz |� � }||z rt j ||g� � }|D ]/}| |||z � } | j |k r|� |� � �0|sg S g }
|� d� � }|}|D ]6}
|
||z k }|
||z k }|s|r|
� |||z g� � |
}|
}�7|
� |||z g� � |
S )ay
Returns a list of all silent sections [start, end] in milliseconds of audio_segment.
Inverse of detect_nonsilent()
audio_segment - the segment to find silence in
min_silence_len - the minimum length for any silent section
silence_thresh - the upper bound for how quiet is silent in dFBS
seek_step - step size for interating over the segment in ms
r r ) �lenr �max_possible_amplitude�range� itertools�chain�rms�append�pop)�
audio_segment�min_silence_len�silence_thresh� seek_step�seg_len�silence_starts�last_slice_start�slice_starts�i�audio_slice�
silent_ranges�prev_i�current_range_start�silence_start_i�
continuous�silence_has_gaps �]/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/pydub/silence.py�detect_silencer! s� � � �-� � �G� �� � �� � !��0�0�=�3W�W�N� �N� ��0����,�q�0�)�<�<�L� �)�#� I� ��|�6F�5G�H�H��
� %� %��#�A�a�/�&9�$9�:���?�n�,�,��!�!�!�$�$�$�� � �� � �M�
�
�
��
"�
"�F� ��)� !� !��%��)�);�;�
�
*�V�o�-E�F��� 2�o� 2�� � �"5�"(�?�":�"<�
=�
=�
=�"1�� ������-� �?�2�4� 5� 5� 5� �� c �l � t | |||� � }t | � � }|sd|ggS |d d dk r|d d |k rg S d}g }|D ]\ }} |� ||g� � | }�| |k r|� ||g� � |d ddgk r|� d� � |S )ay
Returns a list of all nonsilent sections [start, end] in milliseconds of audio_segment.
Inverse of detect_silent()
audio_segment - the segment to find silence in
min_silence_len - the minimum length for any silent section
silence_thresh - the upper bound for how quiet is silent in dFBS
seek_step - step size for interating over the segment in ms
r r )r! r r r )
r r r r r �len_seg�
prev_end_i�nonsilent_ranges�start_i�end_is
r �detect_nonsilentr) L s� � � #�=�/�>�S\�]�]�M��-� � �G� � ��G��~�� �Q����a���M�!�$4�Q�$7�7�$B�$B�� ��J���'� � ��������W� 5�6�6�6��
�
���������W� 5�6�6�6����q�!�f�$�$����Q�����r"