Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add show_recording_waveform to Audio #6551

Merged
merged 15 commits into from Dec 4, 2023
Merged

Add show_recording_waveform to Audio #6551

merged 15 commits into from Dec 4, 2023

Conversation

hannahblair
Copy link
Collaborator

Description

This change allows us to disable the rendering of the microphone during recording. I'm planning on doing the same for the playback waveform and replacing it with the native audio player, but I'd rather do that in a separate PR as there will be a few moving pieces.

Closes: #6483

🎯 PRs Should Target Issues

Before your create a PR, please check to see if there is an existing issue for this change. If not, please create an issue before you create this PR, unless the fix is very small.

Not adhering to this guideline will result in the PR being closed.

Tests

  1. PRs will only be merged if tests pass on CI. To run the tests locally, please set up your Gradio environment locally and run the tests: bash scripts/run_all_tests.sh

  2. You may need to run the linters: bash scripts/format_backend.sh and bash scripts/format_frontend.sh

@gradio-pr-bot
Copy link
Contributor

gradio-pr-bot commented Nov 22, 2023

🪼 branch checks and previews

Name Status URL
Spaces ready! Spaces preview
Website ready! Website preview
Storybook ready! Storybook preview
Visual tests all good! Build review
🦄 Changes detected! Details
📓 Notebooks matching!

Install Gradio from this PR

pip install https://gradio-builds.s3.amazonaws.com/091a82b689aedb993d1fc47958774032260a3057/gradio-4.7.1-py3-none-any.whl

Install Gradio Python Client from this PR

pip install "gradio-client @ git+https://github.com/gradio-app/gradio@091a82b689aedb993d1fc47958774032260a3057#subdirectory=client/python"

@gradio-pr-bot
Copy link
Contributor

gradio-pr-bot commented Nov 22, 2023

🦄 change detected

This Pull Request includes changes to the following packages.

Package Version
@gradio/audio patch
gradio patch
  • Maintainers can select this checkbox to manually select packages to update.

With the following changelog entry.

Add show_recording_waveform to Audio

Maintainers or the PR author can modify the PR title to modify this entry.

Something isn't right?

  • Maintainers can change the version label to modify the version bump.
  • If the bot has failed to detect any changes, or if this pull request needs to update multiple packages to different versions or requires a more comprehensive changelog entry, maintainers can update the changelog file directly.

show_controls: bool
skip_length: int

@dataclasses.dataclass
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing this @hannahblair. For backwards compatibility, it'd be good if we still accepted a dict of waveform options (and internally converted to this dataclass)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to clarify, does this mean keeping the WaveformOptions(TypedDict) and having a separate WaveformOptions dataclass for backward compatibility?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I wasn't clear -- the dataclass for WaveformOptions you had before was great. But if someone has already written code where they pass waveform_options as a dictionary, we should continue to support that (by simply converting the dict to an object of type WaveformOptions`

e.g. something like:

if isinstance(waveform_options, dict):
   waveform_options = WaveformOptions(**waveform_options)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gotcha! Let me know if my backend changes look good.

@hannahblair hannahblair marked this pull request as draft November 22, 2023 23:18
@hannahblair hannahblair marked this pull request as ready for review November 23, 2023 18:30
@@ -142,7 +145,12 @@ def __init__(
if show_share_button is None
else show_share_button
)
self.waveform_options = waveform_options

self.waveform_options = (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good!

Copy link
Member

@abidlabs abidlabs Nov 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually we may also need to handle the case when waveform_options=None. Right now, if I don't pass in any waveform_options, no waveform is shown while recording, instead the default behavior which should be to show the waveform.

i.e. if waveform_options is None, we should set it to WaveformOptions()

@abidlabs
Copy link
Member

Looks good @hannahblair! Left a few nits on the backend (let me know if anything is unclear)

Also pushed a change so that we can directly access the WaveformOptions class as gr.WaveformOptions.

@abidlabs
Copy link
Member

It'd be good to use the gr.WaveformOptions class in one of our demos, maybe reverse_audio?

@hannahblair hannahblair self-assigned this Dec 4, 2023
@abidlabs
Copy link
Member

abidlabs commented Dec 4, 2023

I ran cd demo && python generate_notebooks.py to fix the notebook check. Otherwise LGTM! Will go ahead and merge this in so that we can prep for the release.

@abidlabs abidlabs merged commit 8fc562a into main Dec 4, 2023
22 of 24 checks passed
@abidlabs abidlabs deleted the disable-waveform-option branch December 4, 2023 22:00
@pngwn pngwn mentioned this pull request Dec 4, 2023
dawoodkhan82 pushed a commit that referenced this pull request Dec 8, 2023
* add show_recording_waveform

* add changeset

* add animation

* Refactor audio component and waveform options

* formatting

* add margin before audio controls

* amend default values

* expose gr.WaveformOptions

* Tweak waveform options types and handle none

* add waveform_options to reverse_audio

* tweak bool typing

* notebook

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
abidlabs added a commit that referenced this pull request Dec 13, 2023
* fix

* add changeset

* tests

* Update package.json

* Hotfix: version on changelog (#6559)

* clog version

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix version in other changelog (#6561)

* Fix version in other changelog

why do we have 2?

* remove changeset

* Ensure Chatbot messages are properly aligned when `rtl` is true (#6574)

* fix text alignment when rtl is true

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Improve like/dislike functionality (#6572)

* amend like/dislike logic

* add like/dislike to chatbot demo and add e2e test

* add changeset

* e2e test changes

* revert chatbot_component changes

* tweak

* generate notebooks

* tweak

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix typo envrion -> environ (#6585)

* Feat: make UploadButton accept icon (#6584)

* feat: make UploadButton accept icon

* add changeset

* add proxy url prop

* add stories

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Make FileExplorer work on python 3.8 and 3.9. Also make it update on changes to root, glob, or glob_dir (#6550)

* Add code

* add changeset

* add changeset

* Add test

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix uploaded file wasn't moved to custom temp dir at different disks (#6565)

* Fix uploaded file wasn't moved to custom temp dir at different disks

* add changeset

* Update routes.py

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>

* Fix the docstring decoration (#5885)

* Fix the docstring of the `Slider` class

* add changeset

* Update the JSON file generator to output a new field .styled_description to render the inline code syntax in the description field

* add changeset

* Update style_types() to deal with backticks and single asterisks

* Update the inline style converter to use regex for the curly bracket syntax as well

* Revert `style_types()` not to touch the `description` field and update the frontend code to apply styling to such formatted texts on Svelte's side

* Apply the inline styler to other `.description` field appearances

* Apply the inline styler to `.preprocessing`, `.postprocessing`, `.examples-format`, `.events`, and `*.parameters.doc`

* Stop applying HTML styles to the JSON data, instaed apply HTML escaping

* Escape HTML tokens in .parameters[]["doc"] too

* fixes

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>

* chore(deps): update all non-major dependencies (#6593)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency jsdom to v23 (#6582)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Update zh-CN.json (#6512)

* Update zh-CN.json

* add changeset

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix: Gradio Client work with private Spaces (#6602)

* client with private space

* add changeset

* lint

* add test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update file_explorer.py - Fixing error if nothing selected in file_count=single mode (return None rather) (#6607)

* Update file_explorer.py

Fixing error if nothing selected in file_count=single mode (return None rather)

* add changeset

* added unit tests

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Remove 2 slider demos from docs (#6624)

* remove 2 slider demos

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix encoding issue #6364 of reload mode (#6622)

* fix: configure default encoding as utf-8

* apply doc change for the fix

* apply cn doc change for the fix

* add changeset

* Lint

---------

Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Quick Image + Text Component Fixes (#6635)

* fixes

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Improve video trimming and error handling (#6566)

* amend trimming logic and return original file when error occurs

* add interactive story test

* add changeset

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Add `show_recording_waveform` to Audio (#6551)

* add show_recording_waveform

* add changeset

* add animation

* Refactor audio component and waveform options

* formatting

* add margin before audio controls

* amend default values

* expose gr.WaveformOptions

* Tweak waveform options types and handle none

* add waveform_options to reverse_audio

* tweak bool typing

* notebook

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* chore(deps): update dependency chromatic to v10 (#6619)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update chromaui/action action to v10 (#6618)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Add concurrency_limit to ChatInterface, add IDE support for concurrency_limit  (#6653)

* concurrency limit chat interface

* add changeset

* Update gradio/chat_interface.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* format (#6658)

* Removes smooth scrolling from website (#6650)

* smooth scrolling with css

* add changeset

* formatting

* remove smooth scrolling

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (#6575)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix reload mode warning about not being able to find the app (#6660)

* Fix warning

* add changeset

* Use *

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update HF token used in CI tests (#6671)

* fix tests

* format

* fixes

* add changeset

* fixes

* fix

* fix

* update

* update

* test client

* format

* hf token 2

* add changeset

* add env

* add envs

* tests

* env

* fixes

* test external

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* use gr.Error for audio length errors (#6672)

* use gr.Error for audio length errors

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Issue 5245: consolidate usage of requests and httpx (#6598)

* issue 5245 commit 1

* formatted

* add changeset

* fixes

* fixes

* make changes in client too

* remove requests from client

* add changeset

* add changeset

* Fixes to test_utils.py in client

* fixes in client utils.py and test_utils.py

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Remove Discourse Forum Link from Website (#6679)

* remove forum link

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Tweak to our bug issue template (#6677)

* template

* add timeouts

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Set gradio api server from env (#6666)

* Use GRADIO_API_SERVER env

* Format the code

* add changeset

* Use env GRADIO_SHARE_SERVER_ADDRESS as default share_server_address

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Render each app in the PR's spaces preview in a separate page (#6657)

* Use template response

* minor fix

* Return type hint

* add changeset

* Remove return types

* response_class=None

* Use relative path

* SPA

* remove pydantic pin

* Revert

* delete changeset

* Overflow hidden on body

* text gray

* Collapsible sidebar

* max-height

* Use search params

* document.location.search

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* perf guide (#6673)

* switch from black to ruff formatter (#6543)

* migrate from black to ruff

* fix script and dependencies

* applying ruff

* add changeset

* add changeset

* address ruff feedback

* replace linter

* fixed typing

* fix typing

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Cause `gr.ClearButton` to reset the value of `gr.State`  (#6680)

* state

* note

* add changeset

* buttons

* clear button

* lint

* if

* clear'

* reset state

* fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix dropdown blur bug when values are provided as tuples (#6694)

* fix dropdown blur bug

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* type fix

* test

* Remove the styles from the Image/Video primitive components and Fix the container styles (#6726)

* Remove the styles from the Image/Video primitive components and Fix the container styles

* add changeset

* Fix image example size styles

* Remove border from image/Example with type=gallery

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* test fix

* add changeset

* test fix

* add changeset

* test

* test fix

* test fix audio video

* format

* fix obj file issue

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: Hannah <hannahblair@users.noreply.github.com>
Co-authored-by: Simon Duerr <dev@simonduerr.eu>
Co-authored-by: Xiang Liao <liao1120x@gmail.com>
Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>
Co-authored-by: Dody Suria Wijaya <dody@cryptolab.net>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: yanlin <59528590+cibimo@users.noreply.github.com>
Co-authored-by: v-chabaux <149407738+v-chabaux@users.noreply.github.com>
Co-authored-by: Lihao Lei <leilei199708@gmail.com>
Co-authored-by: pngwn <hello@pngwn.io>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: cswamy <101974014+cswamy@users.noreply.github.com>
Co-authored-by: aisensiy <aisensiy@163.com>
Co-authored-by: D V <77478658+DarhkVoyd@users.noreply.github.com>
pseudotensor added a commit to h2oai/h2ogpt that referenced this pull request Dec 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Can't disable waveform for microphone
3 participants