Git Product home page Git Product logo

Comments (6)

Naoki-Hiraoka avatar Naoki-Hiraoka commented on July 17, 2024 1

https://github.com/jsk-ros-pkg/jsk_3rdparty/tree/master/3rdparty/google_cloud_texttospeech は問題なくこれらの記号がある文を読み上げてくれることを確認しました。

hiraoka@hiraoka-desktop:/opt/ros/melodic/share/pr2eus$ roseus ./speak.l 
$ (ros::roseus "aaa") 
$ (speak-jp "『こんにちは』") 
$ (speak-jp "こんにちは!") 
$ (speak-jp "こんにちは〜") 

from jsk_3rdparty.

708yamaguchi avatar 708yamaguchi commented on July 17, 2024

この件に関して、aques_talkにプルリクエストを出しました。
#257

まずaques_talkが「!」や「こんにちは!」を読めない問題ですが、これは特殊なタグで囲うことで読めるようになります。
https://www.a-quest.com/archive/manual/siyo_onseikigou.pdf
この音声記号列仕様表とAquesTalk2 Linux Manualの存在をREADMEに書き、かつ、JSKのGoogle Driveにもおいておきました。
https://www.a-quest.com/archive/manual/aqtk2_lnx_man.pdf

このように特定の文字列を特殊タグで囲う作業はすでにaques_talkでは行われていて、以下のように入力文字列をsedで置き換えることで、数字やアルファベットを読めるようにしています。

# escape invalid code
os.system("nkf -j %s | kakasi -JH | nkf -w | \
sed -e 's/,/、/g' | sed -e 's/,/、/g' | \
sed -e 's/./。/g' | sed -e 's/\./。/g' | \
sed -e 's/\([a-zA-Z]\+\)/<ALPHA VAL=\\1>/g' | \
sed -e 's/\([0-9]\+\)/<NUMK VAL=\\1>/g' > \
%s"%(input_file, jptext_file))
os.system("cat %s 1>&2"%(jptext_file))
os.system("rosrun aques_talk SampleTalk -p %s -o %s %s"%(phont_file, output_file, jptext_file))

今回は「!」を読んでほしいわけではないと思うので、sedの行を追加して「!」や「『」などの文字を無視するようにしました。
ただ、「'」や「"」が文章の開始文字として認識されたり、「[」や「]」がsedの制御文字と認識されたりと、無視しきれない文字があったので、README.mdにそのことを書いておきました。(SQLインジェクション対策の重要性がわかってきました)
僕の正規表現力が低い可能性が高いので、実は「]」は入力できるよ、のような表現があれば教えていただきたいです。

次にvoice_textで(send *ri* :speak-jp xxx)を行ったところ、「!」は発音されなかったですが「こんにちは!」を読むことは出来ました。また、fetch_bringup.launchのログにエラーも表示されませんでした。
ReakSpeaker(旧voice_text)のオンライン音声合成サンプルでも試しましたが、やはり「!」は発音されず「こんにちは!」を読むことは出来ました。
https://readspeaker.jp/

僕は今のところ、voice_textではAquesTalkの音声記号列仕様表のようなドキュメントを見つけられていないので、見つけ次第返信します。

from jsk_3rdparty.

ayfujii avatar ayfujii commented on July 17, 2024

プルリクありがとうございます。

プルリクのブランチのaques_talkを使って、上記のchaplus_ros.pyの138-141行目のreplaceしているところは消したコードで
roslaunch chaplus_ros google_example.launch
を試したところ、エラーが出なくなっていることを確認しました。

上記のchaplus_ros.pyの138-141行目は消去したいと思います。

from jsk_3rdparty.

708yamaguchi avatar 708yamaguchi commented on July 17, 2024

ご確認ありがとうございます。
その後、プログラムの見通しを良くするために追加コミットをしたので、再度ご確認していただけると助かります。

ちなみに、aques_talk側での文字列置換では以下の操作を行っています。

  1. 漢字をひらがなに変換。
nkf -j %s | kakasi -JH | nkf -w | \
  1. 「,」を「、」に、「,」を「、」に、「.」を「。」に、「.」を「。」に変換。
sed -e 's/,/、/g' | sed -e 's/,/、/g' | \
sed -e 's/./。/g' | sed -e 's/\./。/g' | \
  1. 正規表現で[a-zA-Z0-9ぁ-んァ-ンー、。??]を表す文字以外を全て削除。つまり、アルファベット、数字、ひらがな、カタカナ、「ー、。??」以外を全て削除。
sed -e 's/[^a-zA-Z0-9ぁ-んァ-ンー、。??]//g' | \
  1. AquesTalk2がアルファベットや数字を発音できるように、特殊な制御文字を追加。
sed -e 's/\([a-zA-Z]\+\)/<ALPHA VAL=\\1>/g' | \
sed -e 's/\([0-9]\+\)/<NUMK VAL=\\1>/g' > \

from jsk_3rdparty.

ayfujii avatar ayfujii commented on July 17, 2024

ありがとうございます。動作することを確認しました。

細かい話になってしまうのですが、「!」は文の切れ目に多いと思うので「。」に置換するのと、「〜」は伸びる音「ー」に置換したほうが、よりもともとのニュアンスが伝わるかなと思いました。
下記のものを追加するのはいかがでしょうか?
ご検討よろしくお願い致します。

sed -e 's/!/。/g' | sed -e 's/\!/。/g' | \
sed -e 's/〜/ー/g' | \ 

from jsk_3rdparty.

k-okada avatar k-okada commented on July 17, 2024

@ayfujii よい提案だと思うので
https://github.com/jsk-ros-pkg/jsk_3rdparty/blob/57c53ad08b09709b88538c3319153c08aff65cea/3rdparty/aques_talk/README.md
にpull requestを送るのが良いと思います

その際、それぞれの場合の音声のwavファイルもつけると説得力が増します

from jsk_3rdparty.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.