Skip to content

Import error due to inflect #1322

Open
Open
@uyuutosa

Description

@uyuutosa

Related to Tacotron2/Pytorch

Describe the bug
When I run train.py on PyTorch/SpeechSynthesis/Tacotron2/, following error occured:

Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)
Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)
Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)
Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)
Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)
Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)
Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)
Traceback (most recent call last):
  File "train.py", line 44, in <module>
    import data_functions
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/data_functions.py", line 29, in <module>
    from tacotron2.data_function import TextMelCollate
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/data_function.py", line 33, in <module>
    from tacotron2.text import text_to_sequence
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/__init__.py", line 3, in <module>
    from tacotron2.text import cleaners
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/cleaners.py", line 16, in <module>
    from .numbers import normalize_numbers
  File "/workspace/benchmark/SpeechSynthesis/Tacotron2/tacotron2/text/numbers.py", line 3, in <module>
    import inflect
  File "/opt/conda/lib/python3.8/site-packages/inflect/__init__.py", line 77, in <module>
    from pydantic.typing import Annotated
ImportError: cannot import name 'Annotated' from 'pydantic.typing' (/opt/conda/lib/python3.8/site-packages/pydantic/typing.py)

To Reproduce

When I attempted to execute the following command in conjunction with these instructions, the aforementioned error occurred.

bash scripts/train_tacotron2.sh

Expected behavior
train.py works without ImportError.

Environment

  • Container version (e.g. pytorch:19.05-py3): nvcr.io/nvidia/pytorch:20.06-py3
  • GPUs in the system: (e.g. 8x Tesla V100-SXM2-16GB): 8xA100 80GB SXM4
  • CUDA driver version (e.g. 418.67): 525.105.17

Based on my investigation, it seems that this error has emerged due to a lack of backward compatibility between Pydantic 2.0 and Inflect. The issue was highlighted in this GitHub discussion and the proposed solution was to use a specific version of pydantic (1.10.10). As a result, I was able to fix the error by adding pydantic==1.10.10 to the requirements.txt file, immediately after the inflect entry, like this:

matplotlib
numpy
inflect
pydantic==1.10.10 # added
librosa
scipy
resampy==0.3.1
git+https://github.com/NVIDIA/[email protected]#egg=dllogger

However, to manage the version dependency more effectively, I suggest using a dependency management tool like Poetry, as it can be challenging to handle this solely through requirements.txt.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions