[GH-ISSUE #3] obs-rvc/src/rt_utils.rs get_sola_offset 中的卷积似乎引入了额外计算量 #1

Closed
opened 2026-10-20 09:52:55 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @TYPEmber on GitHub (May 23, 2024).
Original GitHub issue: https://github.com/RVC-Project/obs-rvc/issues/3

这两个地方似乎都只是想要做一维卷积,但是却都先转换到了三维再进行卷积,这样会引入额外的计算。

    let conv_input_size = buffer_frame_size + search_frame_size;
    let conv_input = input_buffer
        .slice(s![..conv_input_size])
        .into_shape((1, 1, conv_input_size))?;
    let sola_buffer_view = sola_buffer
        .into_shape((1, 1, buffer_frame_size))?;

    let cor_nom = conv_input.conv_fft(
        &sola_buffer_view, ndarray_conv::ConvMode::Valid, 
        ndarray_conv::PaddingMode::Zeros
    )?;

    let cor_den_filler = ndarray::Array3::<f32>::ones((1, 1, buffer_frame_size));
    let mut cor_den = conv_input.mapv(|x| x.powi(2)).conv_fft(
        &cor_den_filler, ndarray_conv::ConvMode::Valid, 
        ndarray_conv::PaddingMode::Zeros
    )?;
Originally created by @TYPEmber on GitHub (May 23, 2024). Original GitHub issue: https://github.com/RVC-Project/obs-rvc/issues/3 这两个地方似乎都只是想要做一维卷积,但是却都先转换到了三维再进行卷积,这样会引入额外的计算。 ```rust let conv_input_size = buffer_frame_size + search_frame_size; let conv_input = input_buffer .slice(s![..conv_input_size]) .into_shape((1, 1, conv_input_size))?; let sola_buffer_view = sola_buffer .into_shape((1, 1, buffer_frame_size))?; let cor_nom = conv_input.conv_fft( &sola_buffer_view, ndarray_conv::ConvMode::Valid, ndarray_conv::PaddingMode::Zeros )?; let cor_den_filler = ndarray::Array3::<f32>::ones((1, 1, buffer_frame_size)); let mut cor_den = conv_input.mapv(|x| x.powi(2)).conv_fft( &cor_den_filler, ndarray_conv::ConvMode::Valid, ndarray_conv::PaddingMode::Zeros )?; ```
Author
Owner

@wfjsw commented on GitHub (May 24, 2024):

因为 torch 做 conv1d 的时候是这样的,我就这么写了。看起来好像确实没有必要。

<!-- gh-comment-id:2128424581 --> @wfjsw commented on GitHub (May 24, 2024): 因为 torch 做 conv1d 的时候是这样的,我就这么写了。看起来好像确实没有必要。
Author
Owner

@TYPEmber commented on GitHub (May 24, 2024):

嗯嗯,这个库里面三维卷积会带来额外的两次reshape+fft,因此也许会大幅拖慢整体运行速度

<!-- gh-comment-id:2128505028 --> @TYPEmber commented on GitHub (May 24, 2024): 嗯嗯,这个库里面三维卷积会带来额外的两次reshape+fft,因此也许会大幅拖慢整体运行速度
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
RVC-Project/obs-rvc#1
No description provided.